Używam ruby 1.8.7.blok ruby i zwracanie czegoś z bloku
p = lambda { return 10;}
def lab(block)
puts 'before'
puts block.call
puts 'after'
end
lab p
Nad wyjściem kodu jest
before
10
after
I refactored sam kod do tego
def lab(&block)
puts 'before'
puts block.call
puts 'after'
end
lab { return 10; }
Teraz jestem coraz LocalJumpError: nieoczekiwany powrotnej.
Dla mnie oba kody robią to samo. Tak, w pierwszym przypadku przekazuję proc, aw drugim przypadku przechodzę blok. Ale blok & zamienia ten blok na proc. Więc proc.call powinien zachowywać się tak samo.
I tak widziałem ten post Using 'return' in a Ruby block
http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/ to naprawdę fajny napis. Dziękuję udostępnianie. –