Próbuję użyć Ruby 1.9.1 jako osadzonego języka skryptowego, tak aby kod „użytkownika końcowego” został zapisany w bloku Ruby. Jednym z problemów jest to, że chciałbym, aby użytkownicy mogli używać słowa kluczowego „return” w blokach, aby nie musieli martwić się o niejawne wartości zwracane. Mając to na uwadze, chciałbym móc to zrobić:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Jeśli użyję „return” w powyższym przykładzie, otrzymam LocalJumpError. Zdaję sobie sprawę, że dzieje się tak, ponieważ omawiany blok jest proc, a nie lambda. Kod działa, jeśli usunę słowo „powrót”, ale naprawdę wolałbym móc użyć „powrotu” w tym scenariuszu. czy to możliwe? Próbowałem przekonwertować blok na lambdę, ale wynik jest taki sam.