loop { break }
può funzionare benissimo, maCome rompere un ciclo esterno in chiusura (Proc, lambda)?
block = Proc.new { break }
# or
# block = lambda { break }
loop(&block) # => LocalJumpError: break from proc-closure
E 'possibile break
in un block variable
?
Aggiornamento:
Un esempio per spiegare di più:
def odd_loop
i = 1
loop do
yield i
i += 2
end
end
def even_loop
i = 2
loop do
yield i
i += 2
end
end
# This work
odd_loop do |i|
puts i
break if i > 10
end
# This doesn't work
break_greater_10 = Proc.new do |i|
puts i
break if i > 10
end
odd_loop(&break_greater_10) # break from proc-closure (LocalJumpError)
even_loop(&break_greater_10) # break from proc-closure (LocalJumpError)
Come la mia comprensione, Proc.new
dovrebbe funzionare stesso blocco (si può return
una funzione dal blocco), ma non capisco il motivo per cui non può rompere un ciclo.
P.S. Scusa per il mio cattivo inglese> ~ <
Cosa vuoi ottenere con questo? –
99% correlato: http://stackoverflow.com/questions/626/when-to-use-lambda-when-to-use-proc-new – tokland
@Sergio Vedi aggiornamento, @tokland conosco il diverso in 'Proc. nuovo 'e' lambda', sto chiedendo 'break' in' closure' –