「エンドユーザー」コードがRubyブロックに書き込まれるように、組み込みスクリプト言語にRuby 1.9.1を使用しようとしています。これに関する 1 つの問題は、ユーザーがブロック内で「return」キーワードを使用できるようにして、暗黙の戻り値について心配する必要がないようにしたいということです。これを念頭に置いて、これは私ができるようにしたいことです:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
上記の例で「return」を使用すると、LocalJumpError が発生します。これは、問題のブロックがラムダではなく Proc であるためであることは承知しています。「return」を削除してもコードは機能しますが、このシナリオでは「return」を使用できるようにしたいと思います。これは可能ですか?ブロックをラムダに変換しようとしましたが、結果は同じです。