Vad är ternära (villkorade) operatörer i Ruby?

Ternären (eller villkorlig) operatören kommer att utvärdera ett uttryck och returnera ett värde om det är sant, och ett annat värde om det är falskt. Det är lite som en korthet, kompakt om uttalande.

Rubys ternära operatör har sin användning men den är också lite kontroversiell.

Extern ternär operatör

Låt oss titta på detta exempel:

Här används den villkorade operatören för att välja mellan två strängar. Hela operatörsuttrycket är allt inklusive villkorat, frågetecken, två strängar och kolon. Det allmänna formatet för detta uttryck är som följer: villkorlig ? sant falskt.

Om det villkorade uttrycket är sant, kommer operatören att utvärdera som det verkliga uttrycket. Annars utvärderas det som det falska uttrycket. I det här exemplet är det inom parentes, så det stör inte strängkopplingens operatörer som omger det.

För att säga detta på ett annat sätt är den villkorade operatören som en om påstående. Kom ihåg det om uttalanden i Ruby utvärderar till det sista värdet i blocket som körs. Så du kan skriva om det föregående exemplet så:

Den här koden är funktionellt ekvivalent och kanske lite lättare att förstå. Om jag är större än 10, om uttalandet själv kommer att utvärdera till strängen "större än" eller kommer att utvärdera till strängen "mindre än eller lika med." Detta är samma sak som den ternära operatören gör, bara den ternära operatören är mer kompakt.

Användningar för den ternära operatören

Så, vad använder den ternära operatören? Det har användningsområden, men det finns inte många, och du kan få det bra utan det.

Det brukar vara skohorn i värden där konditionstjänster skulle vara för skrymmande. Det används också i variabel tilldelning för att snabbt välja mellan två värden. 

Här är två typiska användningsfall du ser för den ternära operatören:

Du kanske har lagt märke till att det här ser riktigt un-Ruby ut. Komplexa uttryck hör bara inte på en rad i Ruby - det är vanligtvis uppdelat och lättare att läsa. Men du kommer att se den här operatören och den kan användas effektivt utan att komma ur handen.

En regel att följa är att om du använder den här operatören för att välja mellan två värden med en enkel villkorad, är det OK att använda. Om du gör något mer komplex bör du antagligen använda en om uttalande istället.