Pourquoi cet extrait:Comportement étrange de `return` lors du passage de rubis Matz à JRuby
def dump_dump
get_dump = lambda do
return 1 if $n
$n = true
module_exec &get_dump
2
end
p get_dump[]
end
Module.new do
module_exec &method(:dump_dump)
end
impression 2
en rubis 2.0.0p481 (08/05/2014) [64 x mingw32]
mais 1
dans jruby 1.7.15 (1.9.3p392) 2014-09-03 82b5cc3 sur Java HotSpot (TM) serveur 64 bits VM 1.7.0_67-b01 + jit [Windows 8-amd64]?
Je voudrais comprendre le problème.
UPD: devrait-il être rapporté quelque part?
Etes-vous sûr de ne pas les avoir remplacés? Mon jruby revient à travers tous les appels - c'est comme ça que j'ai repéré le problème. Le code original traversait un arbre et devait renvoyer un long vecteur, mais jruby me lançait à zéro, soulevant l'exception plus loin dans mon programme. – Nakilon
Oui, je l'ai fait dans le texte après avoir changé de code. Mis à jour avec une réponse différente ... – adzdavies
Si je me souviens, quand j'ai essayé dans mon code très original d'utiliser '{test []}' au lieu de '& test', il avait une autre portée et ne voyait pas les méthodes de module, etc. donc ce remplacement n'est pas équivalent. – Nakilon