Ich versuche, Ruby 1.9.1 für eine eingebettete Skriptsprache zu verwenden, damit "Endbenutzer" -Code in einen Ruby-Block geschrieben wird. Ein Problem dabei ist, dass ich möchte, dass die Benutzer das Schlüsselwort 'return' in den Blöcken verwenden können, damit sie sich nicht um implizite Rückgabewerte kümmern müssen. In diesem Sinne möchte ich Folgendes tun können:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Wenn ich im obigen Beispiel 'return' verwende, erhalte ich einen LocalJumpError. Mir ist bewusst, dass dies daran liegt, dass der fragliche Block ein Proc und kein Lambda ist. Der Code funktioniert, wenn ich 'return' entferne, aber ich würde es wirklich vorziehen, in diesem Szenario 'return' verwenden zu können. Ist das möglich? Ich habe versucht, den Block in ein Lambda umzuwandeln, aber das Ergebnis ist das gleiche.