J'essaie d'utiliser Ruby 1.9.1 pour un langage de script intégré, de sorte que le code "utilisateur final" soit écrit dans un bloc Ruby. Un problème avec ceci est que j'aimerais que les utilisateurs puissent utiliser le mot-clé 'return' dans les blocs, afin qu'ils n'aient pas à s'inquiéter des valeurs de retour implicites. Dans cet esprit, voici le genre de chose que j'aimerais pouvoir faire:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Si j'utilise «return» dans l'exemple ci-dessus, j'obtiens un LocalJumpError. Je suis conscient que c'est parce que le bloc en question est un Proc et non un lambda. Le code fonctionne si je supprime «return», mais je préférerais vraiment pouvoir utiliser «return» dans ce scénario. Est-ce possible? J'ai essayé de convertir le bloc en lambda, mais le résultat est le même.
la source