Wpis z mikrobloga

@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
if bar
1
else
2
end
ensure
3
end
Zakładając, że