Az ügy / kapcsoló nyilatkozatának használata a Ruby-ban

A legtöbben számítógépes nyelvek, eset vagy feltételes (más néven: kapcsoló) állítás összehasonlítja a változó értékét több konstans vagy literál értékével, és az első útvonalat egy megfelelő esettel hajtja végre. Ban ben Rubin, ez egy kicsit rugalmasabb (és erősebb).

Egy egyszerű esélyegyenlőségi teszt helyett az esélyegyenlőség-kezelőt használják, amely számos új felhasználáshoz nyitja meg az ajtót.

Vannak bizonyos különbségek a többi nyelvhez képest. Ban ben C, a kapcsoló nyilatkozat egyfajta helyettesíti egy sorozatot ha és megy nyilatkozatokat. Az esetek műszakilag címkék, és a kapcsoló nyilatkozat megy a megfelelő címkére. Ez egy "áttörésnek" nevezett viselkedést mutat, mivel a végrehajtás nem áll le, amikor egy másik címkét eléri.

Ezt általában el kell kerülni egy törésnyilatkozat felhasználásával, de az áttörés néha szándékos. Ezzel szemben a Ruby-ügyben tett állítás rövidítésnek tekinthető egy sorozat számára ha nyilatkozatokat. Nincs áttörés, csak az első párosítási eset kerül végrehajtásra.

instagram viewer

Az ügy nyilatkozatának alapvető formája

Az esettanulmány alapvető formája a következő.

Mint láthatja, ez felépítése valami olyan, mint egy if / else if / else feltételes kijelentés. A név (amit hívunk érték), ebben az esetben a billentyűzetről, és összehasonlítják a amikor záradékok (azaz esetek), és az első, amikor egy megfelelő esettel végrehajtott blokk kerül végrehajtásra. Ha egyikük sem egyezik meg, a más blokk kerül végrehajtásra.

Ami érdekes itt hogyan az értéket összehasonlítják az egyes esetekkel. Mint fentebb említettük, a C ++és más C-szerű nyelvek esetén egyszerű érték-összehasonlítást kell használni. Ruby-ban az esélyegyenlőség operátort használjuk.

Ne feledje, hogy az esélyegyenlőség kezelőjének bal oldali típusa fontos, és az esetek mindig a bal oldali. Szóval, mindegyiknek amikor záradék, Ruby értékeli eset értéke amíg nem talál egyezést.

Ha be kellene adnunk bubifrizura, Ruby először értékelné "Alice" "Bob", ami azóta hamis lenne Húr# a húrok összehasonlítása. Következő, /[qrz] .+/i "Bob" kivégezték, ami óta hamis bubifrizura nem kezdődik Q, R vagy Z jelöléssel.

Mivel az esetek egyike sem felelt meg, akkor a Ruby végrehajtja az egyéb záradékot.

Hogyan játszik a típus?

Az esetkifejezés általános használata az érték típusának meghatározása, és az eszköz típusától függően másképp történik. Bár ez megtöri Ruby szokásos kacsa típusát, néha szükség van a dolgok elvégzésére.

Ez a Osztály# (technikailag a Module #) operátor, amely megvizsgálja, hogy a jobb oldalon van-e egy? bal oldal.

A szintaxis egyszerű és elegáns:

Egy másik lehetséges forma

Ha a érték Ha kihagyjuk, az esetjellemzés kicsit másképp működik: szinte pontosan úgy működik, mint egy if / else if / else utasítás. Az esetnyilatkozat használatának előnyei azha A nyilatkozat ebben az esetben csupán kozmetikai jellegű.

Kompaktabb szintaxis

Vannak idők, amikor nagyon sok kicsi van amikor záradékokat. Egy ilyen eset egyszerűen túl nagysá válik ahhoz, hogy beleférjen a képernyőn. Ha ez a helyzet (nincs szó szándékkal), akkor használhatja a azután kulcsszó, hogy a test a amikor záradék ugyanazon a vonalon.

Bár ez nagyon sűrű kódot eredményez, mindegyik mindegyik amikor A záradék nagyon hasonló, valójában válik több olvasható.

Amikor egysoros és többsoros sort kell használnia, amikor a záradékok rajtad állnak, ez stílus kérdése. A kettő keverése azonban nem ajánlott - az esetkifejezésnek a lehető legolvashatóbb mintának kell követnie.

Esettanulmány

Mintha az állítások, az esetleírások a amikor kikötés. Más szavakkal, feladatokban felhasználhatók egyfajta táblázat elkészítéséhez. Ne felejtse el azonban, hogy az esetkifejezések sokkal hatékonyabbak, mint az egyszerű tömb- vagy hash-keresések. Egy ilyen táblázatnak nem kell feltétlenül literálokat használni a amikor záradékokat.

Ha nincs egyezés a záradékkal, és nincs más záradék, akkor az esettanulmány értékelni fogja a következőt nulla.