Ternární operátor (programování)

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Ternární operátor je operátor některých programovacích a skriptovacích jazyků, jako například C, C++, Java, PHP a dalších. Má aritu operace rovnou třem. Nejpoužívanější ternární operátor při programování je operátor pro podmíněný výraz, který se nejčastěji zapisuje pomocí znaků „?:“.

Operátor pro podmíněný výraz

Operátor pro podmíněný výraz se nejčastěji používá pro zkrácení zápisu vyhodnocení podmínky.

„?:“

Tradiční jazyková konstrukce if-else se v jazycích, které syntaxí vychází z jazyka C (například C++, C#, Vala, Objective-C, Java, JavaScript nebo ActionScript) se zapisuje následovně:

if (podmínka) { výraz1; } else { výraz2; }

Pomocí operátoru pro podmíněný výraz je možné tento zápis zkrátit:

podmínka ? výraz1 : výraz2;

Postup zpracování je takovýto: # Vyhodnotí se podmínka. # Je-li podmínka nenulová (true), vyhodnotí se výraz1 a ten bude výsledkem celé operace. +more # Je-li podmínka nulová (false), vyhodnotí se výraz2 a ten bude výsledkem celé operace.

Některé jazyky před zpracováním ternárního operátoru vyhodnocují oba výrazy, takže, pokud jsou tyto výrazy náročné na výpočetní čas nebo prostředky, je lepší provést samotné vyhodnocení opisně, pomocí podmíněného vykonání kódu. Operátor . +more: má asociativitu zprava doleva.

Specifika C++

V C++ vytváří l-hodnotu, pokud jsou výraz1 i výraz2 l-hodnoty. Operátor ?: v jazyce C++ nelze přetížit.

Další varianty

V jazyce CPL, který je předchůdcem jazyka C a kde se operátor poprvé objevil, se zapisoval jako e1 → e2, e3.

V jazyce Perl 6 se operátor zapisuje pomocí znaků „??!!“:

podmínka ?? výraz1 !! výraz2;

Elvis operátor

Jako "Elvis operátor" je označována dvou-argumentová forma operátoru ?:, pro ověřování hodnot null: Vrátí první operand (dokonce i bez vyhodnocování druhého), leda by první byl null, to pak tedy vrátí druhý operand.

Oproti ternárnímu operátoru v Elvis-operátoru není druhý operand, jen první a třetí: První dva splývají do jednoho.

Reference

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top