Tôi đã xem phiên bản Ruby mới nhất, để phát một chút với những thay đổi mới nhất. Điều đầu tiên tôi cố gắng làm là gọi một lambda/block/proc của Ruby giống như bạn làm với một Python có thể gọi được.Tại sao cuộc gọi lambda Ruby 1.9 có thể không có dấu chấm ở trước dấu ngoặc đơn?
a = lambda {|x| puts x}
a.call(4) # works, and prints 4
a[4] # works and prints 4
a.(4) # same
a(4) # undefined method 'a' for main:Object
Tại sao cuộc gọi cuối cùng không thể thực hiện được? Nó sẽ bao giờ?
bạn có thể giải thích kịch bản lambda một chút không? – Geo
ok, khi bạn cố gắng gọi một phương thức có tên 'blah()' và 'method_missing' được kích hoạt, nó sẽ kiểm tra xem liệu lambda có được gọi là' blah' được định nghĩa trong ngữ cảnh thích hợp hay không. Nếu một lambda như vậy được định nghĩa thì nó chỉ gọi lambda bằng cách sử dụng cú pháp 'blah.call' thông thường, nó cũng truyền theo bất kỳ tham số nào đã được đưa ra – horseyguy
Tôi nghĩ rằng đây là một hack tuyệt vời. Cảm ơn bạn. – Geo