Wpis z mikrobloga

Nie bez powodu niektóre języki wymagają klamerek po ifie, a inne wymagają else.


@vytah: Wątpię żeby powodem takich wymagań było celowe ograniczenie możliwości postawienia średnika po ifie :P
  • Odpowiedz
@Szab: Cytat z oficjalnej dokumentacji Perla:

Unlike in C and Pascal, in Perl these are all defined in terms of BLOCKs, not statements. This means that the curly brackets are required--no dangling statements allowed.


Przy okazji rozwiązuje to potencjalny problem z if (a) x() if (b); – czy a, czy b jest ewaluowane wcześniej? Klamry zapobiegają niejednoznaczności.
  • Odpowiedz
if (EXPR) BLOCK

if (EXPR) BLOCK else BLOCK

if (EXPR) BLOCK elsif (EXPR) BLOCK ...

if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK


@vytah: To raczej wygląda jak ograniczenie wynikające z gramatyki samego języka, a nie celowe działanie mające na celu wyeliminowanie średniki po ifie :P
  • Odpowiedz
@Szab: Ale to ograniczenie nie musiało istnieć. Gramatyka mogłaby równie dobrze wyglądać if (EXPR) STATEMENT elsif (EXPR) STATEMENT ... else STATEMENT, jak w C, a nie wygląda. Ktoś, kto przecież dobrze znał C, dokonał takiego, a nie innego wyboru.
  • Odpowiedz