->
là cú pháp theo ngữ cảnh, như "
. Ý nghĩa của nó được cố định bởi đặc tả ngôn ngữ.
Kernel#lambda
là phương pháp giống như bất kỳ phương pháp nào khác. Nó có thể bị ghi đè, xóa, ghi đè, monkeypatched, chặn,…
Vì vậy, ngữ nghĩa, chúng rất khác nhau.
Cũng có thể hiệu suất của chúng khác nhau. Kernel#lambda
sẽ ít nhất có phí của cuộc gọi phương thức. Thực tế là động cơ thực thi không thể thực sự biết được Kernel#lambda
làm gì khi chạy (vì nó có thể là khỉ) cũng sẽ loại bỏ bất kỳ tối ưu hóa tĩnh nào, mặc dù tôi không tin bất kỳ công cụ thực thi Ruby nào tối ưu hóa các chữ lambda một cách có ý nghĩa.
Nguồn
2015-01-29 14:46:07