:1.8
foo = lambda do
for j in 1..2
return
end
end
foo.call
충돌합니다 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
왜 이 일을합니까? 그러나 Ruby 1.9 버전에서 정상적으로 실행되는 것으로 보입니다.
편집 : 그냥 람다 안에서 돌아 오는 것이 아닙니다. 다음은 정상적으로 실행됩니다 :
foo = lambda do
return
end
foo.call
왜 대신 람다 범위를 지정할 수 있습니까? 원래 시나리오에서는 건너 뛸 필요가있는 for 루프 다음에 코드가 있기 때문에 루프에서 벗어날 수는 없습니다 – user102008
람다 대신 실제 메서드를 사용해 볼 수 있습니다. –
젠장. Ruby 1.8은 define_method를 통해 정의 된 메소드 내부에서 proc 내부에서 리턴을 허용하지 않습니다. 그걸 긁어. –