Operator warunkowy - Google

Operator warunkowy

Z Wikipedii

Skocz do: nawigacji, szukaj

Operator warunkowy (ang. conditional operator) to konstrukcja programistyczna instrukcji warunkowej w formie operatora trójkowego w językach które rozróżniają wyrażenia (expressions) od komend (statement), pozwalająca na sprawdzenie warunku na poziomie wyrażenia.

W C jest zapisywana jako warunek ? wyr1 : wyr2. TakÄ… samÄ… postać ma w takich jÄ™zykach jak C++, Java, C#, Perl i Ruby; w jÄ™zyku Python kolejność wyrażeÅ„ jest nieco inna: wyr1 if warunek else wyr2.

Przy spełnionym warunku zwracana jest wartość pierwszego wyrażenia wyr1, w przeciwnym razie - drugiego wyr2. Obliczana jest wartość tylko tego z wyrażeń, które zostało wybrane.

Dzięki temu rozróżnienie między wyrażeniami i komendami jest o wiele mniej istotne, niż w takich językach jak Pascal, i można pisać o wiele prostszy i bardziej zrozumiały kod.

Np.:

zmienna = warunek ? wyr1 : wyr2;

daje taki sam rezultat, co

if (warunek) then
    zmienna = wyr1
else
    zmienna = wyr2;

Bardziej skomplikowane przypadki wymagają duplikacji kodu lub użycia zmiennych tymczasowych, obniżając znacząco jego czytelność, np. poniższy przykład z Apache 2:

  apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd : 0));

musiałby zostać zapisany jako:

  if (maxfwd > 0)
    apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", maxfwd));
  else
    apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", 0));

lub:

  int tmp;
  if (maxfwd > 0)
    tmp = maxfwd;
  else
    tmp = 0;
  apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", tmp));

Języki nie rozróżniające wyrażeń i komend, takie jak języki funkcjonalne, mogą używać zwykłego if w tym celu i nie potrzebują osobnego operatora warunkowego.

[edytuj] Zobacz też


Facebook blokuje Friend Connect
Serwis społecznościowy Facebook zablokował zaprezentowaną niedawno przez Google usługę Friend Connect. Jak informuje serwis InfoWorld, naruszała ona postanowienia regulaminu.
Miliarder doprowadzi do sprzedaży Yahoo?
Jeden z udziałowców Yahoo!, miliarder Carl Icahn, przygotowuje się to walki z zarządem internetowego giganta na spotkaniu akcjonariuszy, które odbędzie się trzeciego lipca. Poinformował on, że będzie prowadził swoje działania dopóki firma nie rozpocznie nowych negocjacji z Microsoftem.
Samsung i LG pracujÄ… nad standardem mobilnej DTV
Firmy Samsung i LG rozpoczynają współpracę nad nowym standardem mobilnej telewizji cyfrowej, planując połączenie ze sobą technologii MPH oraz A-VSB.
Odtwarzacz MP3 do kÄ…pieli
Firma Ubanana zaprezentowała odtwarzacz MP3 uCan, wykonany z nieprzemakalnych materiałów, dzięki któremu można cieszyć się ulubioną muzyką podczas pływania, lub nurkowania.
Kolorowy cooler dla precesora
Firma Thermaltake wprowadzi na rynek chłodzenie procesora, będące częścią serii Orb. System składa się z aluminiowego radiatora z 140-ma żebrami oraz 112-milimetrowego wentylatora.
Linki: Strona g³ówna