我使用Ruby 1.8.7返回的東西。紅寶石塊和塊
p = lambda { return 10;}
def lab(block)
puts 'before'
puts block.call
puts 'after'
end
lab p
以上代碼的輸出是
before
10
after
我重構相同的代碼到這個
def lab(&block)
puts 'before'
puts block.call
puts 'after'
end
lab { return 10; }
現在我越來越LocalJumpError:意想不到的回報。
對我來說,這兩個代碼都在做同樣的事情。是的,在第一種情況下,我通過了一個proc,而在第二種情況下,我通過了一個block。但&塊將該塊轉換爲proc。所以proc.call應該表現相同。
是的,我已經看到了這個帖子Using 'return' in a Ruby block
http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/是一個非常好的寫作。謝謝分享。 – 2010-05-14 20:45:05