У већини рачунарски језици, случај или условно (такође познато као прекидач) Изјава упоређује вредност променљиве са оном неколико константи или литерала и извршава први пут са одговарајућим случајем. Ин Руби, то је мало флексибилније (и моћније).
Уместо једноставног теста једнакости, користи се оператор за случај једнакости, који отвара врата за многе нове намене.
Међутим, постоје неке разлике од осталих језика. Ин Ц, изјава прекидача је врста замене за низ иф анд гото изјаве. Случајеви су технички налепнице и изјава о пребацивању прећи ће на одговарајућу етикету. Ово показује понашање названо "пропадање", јер се извршење не зауставља када досегне другу ознаку.
Обично се избегава коришћење исказа прелома, али пропадање је понекад намерно. Са друге стране, случај случаја Руби може се схватити као скраћеница за низ ако изјаве. Нема пропадања, извршиће се само први случај подударања.
Основни облик изјаве о случају
Основни облик изјаве случаја је следећи.
Као што видите, ово је структурирано нешто попут условне изјаве иф / елсе иф / елсе. Име (које ћемо назвати
вредност), у овом случају унесеном са тастатуре, упоређује се са свим случајевима из када клаузуле (тј. случајева), а први када се изврши блок са одговарајућим случајем. Ако ниједан од њих не одговара, тада друго блок ће се извршити.Оно што је овде занимљиво је како вредност се упоређује са сваким од случајева. Као што је горе поменуто, у Ц ++и другим језицима сличним Ц користи се једноставно поређење вредности. У Руби-у се користи оператор за случај једнакости.
Имајте на уму да је врста леве стране оператора за равноправност случајева важна, а случајеви су увек леви. Дакле, за сваког када клаузулу, процијенит ће Руби вредност случаја док не нађе утакмицу.
Ако желимо да унесемо Боб, Руби би прво проценила "Алиса" Боб, што би од тада било лажно Низ# дефинише се као поређење струна. Следећи, / евиденцекрзСенсе.+/и "Боб" би био погубљен, што је од тада лажно Боб не почиње са К, Р или З.
Пошто се ниједан случај не подудара, Руби ће тада извршити другу клаузулу.
Како тип улази у игру
Уобичајена употреба исказа случаја је да се одреди врста вредности и да се уради нешто другачије у зависности од њене врсте. Иако ово прекида уобичајено писање патки Руби, понекад је потребно да се ствари заврше.
Ово функционише коришћењем Класа# (технички гледано, Модул бр.) оператор, који тестира да ли је десна страна је? лева страна.
Синтакса је једноставна и елегантна:
Још један могући образац
Ако вредност је изостављен, изјава случаја делује мало другачије: делује готово тачно као изјава иф / елсе иф / елсе. Предности употребе изјаве случаја над анако Изјава у овом случају су само козметичка.
Компактнија синтакса
Постоје случајеви када постоји велики број малих када клаузуле. Таква изјава случаја лако постаје превише велика да би стала на екран. Ако је то случај (казна није намењена), можете користити онда кључну реч за постављање тела када клаузула у истој линији.
Иако ово чини неки веома густ код, све док је сваки када клаузула је врло слична, у ствари и постаје више читљив.
Када би требало да користите једно-линијске и вишедневне, када клаузуле зависе од вас, питање је стила. Међутим, мешање ове две особе се не препоручује - изјава случаја треба да следи образац како би био што читљивији.
Додјела предмета
Као ако изјаве, изјаве случаја вреднују последњу изјаву у када клаузула Другим речима, они се могу користити у задацима за пружање врсте табеле. Међутим, не заборавите да су изјаве случајева много моћније од једноставних низова или прегледавања хасх-а. Таква табела не мора нужно да користи литерале у када клаузуле.
Ако не постоји подударање када клаузула и ниједна друга клаузула, тада ће се изјава случаја проценити на нула.