Tôi đang cố gắng sử dụng Ruby 1.9.1 cho một ngôn ngữ kịch bản được nhúng, để mã "người dùng cuối" được viết trong khối Ruby. Một vấn đề với điều này là tôi muốn người dùng có thể sử dụng từ khóa 'return' trong các khối, vì vậy họ không cần phải lo lắng về các giá trị trả về tiềm ẩn. Với điều này trong tâm trí, đây là loại điều tôi muốn để có thể làm:Sử dụng 'return' trong khối Ruby
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Nếu tôi sử dụng 'trở lại' trong ví dụ trên, tôi nhận được một LocalJumpError. Tôi biết rằng điều này là bởi vì các khối trong câu hỏi là một Proc và không phải là một lambda. Mã hoạt động nếu tôi xóa 'trả lại', nhưng tôi thực sự muốn có thể sử dụng 'trả lại' trong trường hợp này. Điều này có thể không? Tôi đã cố gắng chuyển đổi các khối để một lambda, nhưng kết quả là như nhau.
tại sao bạn muốn tránh một giá trị trả về tiềm ẩn? – marcgg
@marcgg - Tôi có câu hỏi liên quan ở đây - https://stackoverflow.com/questions/25953519/simple-way-to-understand-returning-from-a-block-in-ruby. –