Kako koristiti izjavu kućišta / prekidača u Rubyju

click fraud protection

U većini računalni jezici, slučaj ili uvjetno (također poznato kao sklopka) Izjava uspoređuje vrijednost varijable s onom nekoliko konstanti ili literala i izvršava prvi put s velikim podudaranjem. U Rubin, to je malo fleksibilnije (i snažnije).

Umjesto jednostavnog ispitivanja jednakosti, koristi se operator jednakosti slučaja, koji otvara vrata za mnoge nove namjene.

Ipak postoje neke razlike od ostalih jezika. U C, izjava prekidača je svojevrsna zamjena za niz ako i goto izjave. Slučajevi su tehnički naljepnice i izjava prekidača preći će na odgovarajuću oznaku. To pokazuje ponašanje nazvano "proboj", jer izvršenje ne prestaje kada dosegne drugu oznaku.

Obično se izbjegava upotreba izjave o prekidu, ali propadanje je ponekad namjerno. S druge strane, slučaj slučaja Ruby može se shvatiti kao skraćenica za niz ako izjave. Nema propadanja, izvršit će se samo prvi slučaj podudaranja.

Osnovni oblik izjave o slučaju

Osnovni oblik izjave o slučaju je sljedeći.

Kao što vidite, ovo je strukturirano nešto poput uvjetne izjave if / else if / else. Ime (koje ćemo nazvati

instagram viewer
vrijednost), u ovom slučaju unesenom s tipkovnice, uspoređuje se sa svim slučajevima iz kada klauzule (tj. slučajevi), a prvi kada se izvrši blok s odgovarajućim slučajem. Ako se niti jedan od njih ne podudara, drugo blok će se izvršiti.

Ono što je ovdje zanimljivo je kako vrijednost se uspoređuje sa svakim od slučajeva. Kao što je gore spomenuto, u C ++i druge jezike slične C koristi se jednostavna usporedba vrijednosti. U Rubyu se koristi operator jednakosti slučaja.

Imajte na umu da je važna vrsta lijeve strane operatora za ravnopravnost slučajeva, a slučajevi su uvijek lijevi. Dakle, za svakog kada klauzulu, procijenit će Ruby vrijednost slučaja dok ne nađe podudarnost.

Ako bismo htjeli ući Bob, Ruby bi prvo procijenila "Alice" "Bob", što bi od tada bilo lažno Niz# definira se kao usporedba struna. Sljedeći, / evidenceqrzSense.+/i "Bob" bi bio pogubljen, što je od tada lažno Bob ne započinje s Q, R ili Z.

Kako se nijedan slučaj ne podudara, Ruby će tada izvršiti drugu klauzulu.

Kako tip ulazi u igru

Uobičajena je uporaba slučaja slučaja da se odredi vrsta vrijednosti i da se učini nešto drugačije ovisno o vrsti. Iako to prekida uobičajeno pisanje patki Ruby, ponekad je potrebno da se stvari srede.

To djeluje pomoću Klasa # (tehnički gledano, Modul#) operator, koji testira ako je desna strana je? lijeva strana.

Sintaksa je jednostavna i elegantna:

Još jedan mogući obrazac

Ako vrijednost je izostavljen, izraz slučaja djeluje malo drugačije: djeluje gotovo točno poput izjave if / else if / else. Prednosti upotrebe izjave slučaja nad anako Izjava u ovom slučaju su samo kozmetička.

Kompaktnija sintaksa

Postoje slučajevi kada postoji veliki broj malih kada klauzule. Takva izjava slučaja lako postaje previše velika da stane na ekran. Ako je to slučaj (bez kašnjenja), možete koristiti zatim ključnu riječ staviti tijelo kada klauzula u istoj liniji.

Iako ovo čini neki vrlo gust kod, sve dok je svaki kada klauzula je vrlo slična, ona zapravo postaje više čitljiv.

Kada biste trebali upotrebljavati jedno-linijski i više-linijski kada vam klauzule odgovaraju, pitanje je stila. Međutim, njihovo miješanje nije preporučljivo - izjava slučaja treba slijediti obrazac kako bi bio što čitljiviji.

Dodjela predmeta

Kao ako izjave, slučajevi slučaja vrednuju posljednju tvrdnju u kada klauzula. Drugim riječima, oni se mogu koristiti u zadacima za pružanje vrsta tablice. No, ne zaboravite da su izjave slučaja mnogo moćnije od jednostavnih nizova ili pregledavanja hash-ova. Takva tablica ne mora nužno koristiti literale u kada klauzule.

Ako ne postoji podudaranje kada klauzula, a ne postoji druga, tada će se izjava slučaja procijeniti na nula.

instagram story viewer