Как да използвате заявлението за случай / превключване в Ruby

В повечето компютърни езици, случай или условен (известен също като ключ) оператор сравнява стойността на променлива с тази на няколко константи или буквали и изпълнява първия път с съвпадение. в рубин, е малко по-гъвкав (и мощен).

Вместо обикновен тест за равенство се използва операторът за равенство на случаите, който отваря вратата за много нови приложения.

Има обаче някои разлики от другите езици. в ° С, командата за превключване е вид заместване на поредица от ако и goto изявления. Случаите са технически етикети и изявление за превключване ще премине към съответстващия етикет. Това показва поведение, наречено „пропадане“, тъй като изпълнението не спира, когато достигне друг етикет.

Обикновено се избягва използването на изказване за прекъсване, но понякога пропадането е умишлено. Изявлението на случая в Ruby, от друга страна, може да се разглежда като стенограма за поредица от ако изявления. Няма падане, ще бъде изпълнено само първото съвпадение.

Основната форма на делото

Основната форма на декларация по случая е следната.

instagram viewer

Както можете да видите, това е структурирано нещо като условно изявление if / else if / else. Името (което ще наречем стойност), в този случай въведен от клавиатурата, се сравнява с всеки от случаите от кога клаузи (т.е. случаи), и първият, когато се изпълни блок със съвпадащ случай. Ако никой от тях не съвпада, то още блок ще бъде изпълнен.

Интересното тук е как стойността се сравнява с всеки от случаите. Както бе споменато по-горе, в C ++и други С-подобни езици се използва просто сравнение на стойностите. В Ruby се използва операторът за равенство на случаите.

Не забравяйте, че типът на лявата страна на оператор за равенство на случаите е важен, а случаите винаги са от лявата страна. И така, за всеки кога клауза, Руби ще оцени стойност на случая докато намери съвпадение.

Ако искаме да въведем Боб, Руби първо ще оцени "Алиса" "Боб", което би било невярно оттогава String # се дефинира като сравнение на низовете. Следващия, / evidenceqrzSense.+/i "Боб" ще бъде изпълнен, което е невярно, тъй като Боб не започва с Q, R или Z.

Тъй като никой от случаите не съвпада, тогава Ruby ще изпълни клаузата друго.

Как типът влиза в игра

Често срещано използване на декларацията за случая е да се определи типа стойност и да се направи нещо различно в зависимост от типа му. Въпреки че това нарушава обичайното писане на патици на Руби, понякога е необходимо да се свършат нещата.

Това работи с помощта на клас # (технически, Модул #) оператор, който тества, ако дясната страна е? лява страна.

Синтаксисът е прост и елегантен:

Друга възможна форма

Ако стойност е пропуснат, декларацията на случая работи малко по-различно: тя работи почти точно като оператор if / else if / else. Предимствата на използването на декларацията за случая надако изявление в този случай са само козметични.

По-компактен синтаксис

Има моменти, когато има голям брой малки кога клаузи. Подобно изявление на случая лесно става твърде голямо, за да се побере на екрана. Когато това е така (не е предназначено каламбур), можете да използвате тогава ключова дума за поставяне на тялото на кога клауза на същия ред.

Макар че това прави някои много плътен код, стига всеки кога клаузата е много подобна, всъщност става Повече ▼ четлив.

Кога трябва да използвате едноредови и многоредови, когато клаузите зависят от вас, това е въпрос на стил. Обаче смесването на двете не се препоръчва - декларацията за случай трябва да следва модел, за да бъде възможно най-четена.

Присвояване на делото

Подобно на това, ако изявленията, декларациите от случая се оценяват на последното твърдение в кога клауза. С други думи, те могат да бъдат използвани в задачи за предоставяне на вид таблица. Въпреки това, не забравяйте, че изявленията на случаите са много по-мощни от обикновения масив или търсенето на хеш. Такава таблица не е задължително да използва литерали в кога клаузи.

Ако няма съвпадение при клауза и няма друго, тогава декларацията на случая ще се оцени до нула.