In Ruby 1.8 (meine Version ist 1.8.7-72), dieser Code:innen für Schleife in Lambda-Abstürzen in Ruby Rückkehr 1.8
foo = lambda do
for j in 1..2
return
end
end
foo.call
stürzt mit einem LocalJumpError
:
test2.rb:3: unexpected return (LocalJumpError)
from test2.rb:2:in `each'
from test2.rb:2
from test2.rb:6:in `call'
from test2.rb:6
Warum tut es das? Allerdings scheint es auf meiner Version von Ruby 1.9 gut zu laufen.
Edit: es ist nicht nur die Rückkehr in einem Lambda; das Folgende läuft gut:
foo = lambda do
return
end
foo.call
Warum kann es nicht stattdessen zum Lambda Bereich? Ich kann nicht einfach aus der Schleife ausbrechen, denn in meinem ursprünglichen Szenario gibt es Code nach der for-Schleife, die ich überspringen muss – user102008
Sie könnten versuchen, eine echte Methode, anstatt ein Lambda zu verwenden. –
Verdammt. Ruby 1.8 erlaubt keine Rückkehr von innerhalb eines Procs innerhalb einer Methode, die über define_method definiert wurde. Vergiss das. –