Iată un exemplu rapid de cod sursă Ruby, care arată cum am folosit operatorul ternar din Ruby într-o metodă care tipărește o înregistrare CSV pentru o clasă pe care am definit-o:
def print_csv_record last_name.length==0 ? printf(",") : printf("\"%s\",", last_name) first_name.length==0 ? printf(",") : printf("\"%s\",", first_name) city.length==0 ? printf(",") : printf("\"%s\"", city) printf("\n")end
După cum puteți vedea din această metodă, fiecare linie folosește operatorul ternar pentru a lua următoarea decizie:
- Dacă lungimea câmpului dat este egală cu 0, folosiți prima instrucțiune
printf
. - În caz contrar, folosiți a doua instrucțiune
printf
.
Poate că nu pare mult, dar asta este. Lucrul grozav este că este mult mai scurtă decât sintaxa echivalentă if
/then
și este încă foarte ușor de citit.
Dacă doriți mai multe informații despre operatorul ternar Ruby, nu ezitați să citiți mai departe.
Sintaxa generală a operatorului ternar
După cum puteți înțelege din exemplul anterior, sintaxa generală a operatorului ternar din Ruby arată astfel:
test-expression ? if-true-expression : if-false-expression
În exemplul meu anterior, primul meu test-expression
arăta astfel:
last_name.length==0
și if-true-expression
al său arăta astfel:
printf(",")
și if-false-expression
al său arăta astfel:
printf("\"%s\",", last_name)
Sperăm că demonstrarea sintaxei generale a operatorului ternar a ajutat ca codul meu anterior să fie puțin mai ușor de înțeles.
Un al doilea exemplu
Dacă doriți încă un exemplu al operatorului ternar, iată unul care folosește o comparație de test numeric, urmată de două instrucțiuni puts
posibile, una care va fi executată dacă testul este evaluat la adevărat și alta care va fi executată dacă testul este evaluat la fals:
# set the speedspeed = 90# somewhere later in the program ...speed > 55 ? puts("I can't drive 55!") : puts("I'm a careful driver")
După cum ați putea ghici, acest segment de cod va imprima:
I can't drive 55!
(Care rezumă și obiceiurile mele de condus.)
Operatorul ternar este grozav. Îți poate scurta declarațiile if
/then
și, în același timp, îți păstrează codul Ruby lizibil.