Sto cercando di utilizzare Ruby 1.9.1 per un linguaggio di scripting incorporato, in modo che il codice "utente finale" venga scritto in un blocco Ruby. Un problema con questo è che vorrei che gli utenti fossero in grado di utilizzare la parola chiave "return" nei blocchi, quindi non devono preoccuparsi dei valori di ritorno impliciti. Con questo in mente, questo è il tipo di cose che vorrei essere in grado di fare:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Se utilizzo "return" nell'esempio precedente, ottengo un'eccezione LocalJumpError. Sono consapevole del fatto che il blocco in questione è un Proc e non un lambda. Il codice funziona se rimuovo "return", ma preferirei davvero essere in grado di utilizzare "return" in questo scenario. È possibile? Ho provato a convertire il blocco in un lambda, ma il risultato è lo stesso.