Witam. Postanowiłem od czasu do czasu napisać coś ciekawego na temat programowania. Nie będą to rzeczy odkrywcze. Jakaś pojedyncza informacja. Coś w formie faktopedii. Zawodowo programuję od 2001 i stykałem się z wieloma językami, programistami czy dziwnym łączeniu technologii. Zobaczymy, czy kogoś to w ogóle interesuje.
Dziś może coś prostego, ale o dziwo coraz mniej używanego.
Operator Warunkowy Trójargumentowy
x ? y : z Jest to ekwiwalent zapisu:
if(x == true) return y else return z Czyli, jeśli zmienna x jest prawdziwa to zwróć wartość zmiennej y, jeśli x to fałsz zwróć wartość z.
Ja bardzo chętnie z niego korzystam, bo pomaga zapisać warunek w jednej linijce przy minimalnej ilości znaków dodatkowych. Coraz rzadziej się z nim stykam przeglądając kod innych programistów. Może tylko ja tak mam?
@Pifpaf: Mówiąc, że jest to ekwiwalent sugerujesz, że gdyby jedno zastąpić drugim, otrzymałoby się taki sam rezultat. W tym przypadku tak nie będzie, bo sam zapis z użyciem operatora 3-argumentowego niczego nie będzie zwracać. Oczywiście rozumiem co miałeś na myśli, ale to jednak nie jest ekwiwalent. :)
@selenita66: Może masz rację, źle użyte słowo. Muszę się bardziej pilnować. To co napisałem to pseudo kod, bo wiadomo, że w każdym języku inaczej wygląda zapis operatora warunkowego.
@selenita66: W sumie racja. Mogłem napisać po prostu funkcjonalny kawałek kodu. Ja tu nie chcę nikogo edukować, może bardziej zaciekawić. Ale masz rację, trzeba być bardziej dokładnym. Dzięki.
@zapoznalem: Oni mają rację w sprawie semantyki, że napisałem "return", myślałem że to będzie jasne że chodzi o zwrot wartości zmiennej, a nie zwrot wyniku z funkcji. Mój błąd. Zamiast pseudo kodu trzeba chyba używać prawdziwych zapisów z konkretnego języka.
@Pifpaf: z tym też bym się nie zgodził, bo wyniku operatora nie trzeba przecież używać do zmiennej - z punktu widzenia semantyki jest to, powiedziałbym, "wynik/wartość wyrażenia", tylko tyle i aż tyle.
A przechodząc nieco do konkretów, operator występuje też (np. w #php) w skróconej formie x ?: y co jest równoważne x ? x : y
Aktywne Wpisy
18+
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
To najlepsze zdjęcie na #bozecialo jakie znam. Możesz iść w procesji, możesz sobie czilować z piwkiem. Prawdziwa wolność do której większość społeczeństwa jeszcze nie dorosła.
Dziś może coś prostego, ale o dziwo coraz mniej używanego.
Operator Warunkowy Trójargumentowy
x ? y : z
Jest to ekwiwalent zapisu:
if(x == true) return y else return z
Czyli, jeśli zmienna x jest prawdziwa to zwróć wartość zmiennej y, jeśli x to fałsz zwróć wartość z.
Ja bardzo chętnie z niego korzystam, bo pomaga zapisać warunek w jednej linijce przy minimalnej ilości znaków dodatkowych. Coraz rzadziej się z nim stykam przeglądając kod innych programistów. Może tylko ja tak mam?
#programowanie #devpedia #pifpafcoding
@Pifpaf: Tak :)
int x = (10 > 5) ? 2 : 4;
Wg tego co napisałes, powyższy kod powinine zostac przetłumaczony do return 2; Co oczywiście sie nie stanie :)
@Pifpaf: w #ruby i #javascript jest nadal popularny
Zwykle tłumacząc ten operator stosuje się zapis z przypisaniem wyniku, jak w przykładzie z Wikipedii: https://en.wikipedia.org/wiki/%3F:#Usage
Wtedy elegancko i przede wszystkim poprawnie można wprowadzić ekwiwalent.
Komentarz usunięty przez autora
Komentarz usunięty przez autora
@Pifpaf: z tym też bym się nie zgodził, bo wyniku operatora nie trzeba przecież używać do zmiennej - z punktu widzenia semantyki jest to, powiedziałbym, "wynik/wartość wyrażenia", tylko tyle i aż tyle.
A przechodząc nieco do konkretów, operator występuje też (np. w #php) w skróconej formie
x ?: y
co jest równoważne
x ? x : y