Tôi chỉ học ruby và cố gắng hiểu phạm vi mã được thực hiện trong các khối. Ví dụ: tôi muốn có thể tạo một khối ảnh hưởng đến phương pháp mà nó được gắn vào, như vậy:ruby: một khối có thể ảnh hưởng đến các biến cục bộ trong một phương thức không?
def test(&block)
block.call() if block_given?
puts "in test, foo is #{foo}"
puts "in test, bar is #{bar}"
end
test() {
foo="this is foo"
bar="this is bar"
}
Trong trường hợp này tôi không muốn phải sửa đổi khối nào cả - Tôi muốn có thể viết nó bằng cách sử dụng tham chiếu biến đơn giản và không có tham số. Chỉ bằng cách thay đổi phương pháp 'thử nghiệm' trong ví dụ trên, có thể truy cập các biến được xác định trong khối không?
Một lần nữa, mục tiêu là để lại khối chưa được sửa đổi, nhưng có thể truy cập các biến được tạo từ bên trong 'kiểm tra' sau khi khối thực hiện.
Điều này là gây hiểu nhầm, bạn không truy cập vào người dân địa phương trong khối như câu hỏi cho biết, chỉ giá trị trả lại của khối. –