Wpis z mikrobloga

Zagadka dla mirkoprogramistów #ruby (ale można to śmiało rozciągnąć na inne języki, np. #csharp)

Spróbujcie zgadnąć bez uruchamiania kodu, co zostanie wypisane na ekranie po uruchomieniu poniższego kodu:

http://pastebin.com/f4F0GnXD

(w komentarzu wersja #csharp)

#programowanie #naukaprogramowania #zagadkiprogramistyczne
sasik520 - Zagadka dla mirkoprogramistów #ruby (ale można to śmiało rozciągnąć na inn...

źródło: comment_Ur9GT1yDwhykm0BguAtgsYmtryJ5GEU0.jpg

Pobierz
  • 23
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@paulinio: sprawa w gruncie rzeczy dość prosta i nawet niezbędna. Blok ensure/finally nie może zwracać wyniku, dlatego c# się nie skompiluje, a ruby ignoruje wartość zwracaną przez rescue. Stąd wartością zwracaną przez funkcję jest ostatnia wartość bloku przed rescue (a że jest to if, to wartością jest nil).

Dlaczego takie zachowanie jest niezbędne? Bo poniższy kod byby niejednoznaczny

def baz
  • Odpowiedz