Trong Ruby Programming Language, Chương 6 (đoạn thứ hai) họ nêu:chức năng của Ruby vs phương pháp
Nhiều ngôn ngữ phân biệt giữa chức năng, mà không có đối tượng liên quan , và phương pháp, mà được gọi trên một máy thu vật. Bởi vì Ruby là một ngôn ngữ hướng đối tượng thuần túy, tất cả các phương thức là các phương thức đúng và là được liên kết với ít nhất một đối tượng.
Và sau đó ở giữa của đoạn 6:
Cả hai procs và lambdas là chức năng chứ không phải là phương pháp gọi trên một đối tượng .
Tôi hơi bối rối về những phát biểu này. Ruby thực sự là OO thuần túy, và do đó không có các hàm không liên kết với các đối tượng (nếu đó là định nghĩa hợp lệ của OO thuần túy), hoặc là các procs/lambdas được liên kết với đối tượng Proc? Sự khác nhau giữa các hàm và phương thức trong Ruby là gì?
Bất kỳ trợ giúp nào trong phân tích cú pháp và hiểu điều này sẽ được đánh giá cao.
Có, proc và lambda là cả hai đối tượng Proc, nhưng chúng có ý nghĩa gì bởi "là các hàm chứ không phải là phương thức". Và sự khác biệt là gì? –
Ông có nghĩa là câu ở giữa đoạn thứ 6 là không chính xác. –
Sự khác biệt thực sự là, hầu như phổ biến, procs và lambdas chỉ được sử dụng cho phương pháp 'gọi' liên quan của họ. Không ai lưu trữ các phương thức hoặc giá trị bổ sung với chúng. Vì vậy, như Kaptajn Kold nói, chúng ta có thể sử dụng chúng như chúng ta sẽ sử dụng các hàm thứ tự đầu tiên trong các ngôn ngữ khác, mặc dù chúng vẫn thực sự là các đối tượng. – rampion