Tôi hiện đang thử nghiệm với Ruby và Rails, và tôi đã nhấn một vài phần trong hướng dẫn và sách về lập trình meta. Nhiều người đề cập rằng nó là một thành phần thiết yếu của Ruby nhưng chúng không thực sự đi sâu vào chi tiết. Nó giống như metaprogramming là biên giới cuối cùng cho các lập trình viên Ruby. Đến từ một nền .NET Tôi đang đấu tranh để hiểu tại sao nó được cho là rất hữu ích.Tại sao điều quan trọng là phải tìm hiểu về lập trình meta và eigenclasses trong Ruby?
- Lợi ích nào có được khi sử dụng lập trình meta?
- eigenclass là gì và khác biệt gì so với singleton?
- Trong những tình huống nào đang sử dụng lập trình meta phổ biến?
- Ý nghĩa đạo đức nào có xung quanh việc sử dụng mã để sửa đổi hành vi của mã khác, đặc biệt là mã không phải là mã của riêng bạn?
+1 Tôi thực sự thích ví dụ 'attr_accessor', vì nó cho thấy lợi ích quan trọng của khả năng lập trình siêu lập trình mạnh mẽ: lập trình meta giúp ngôn ngữ trở nên đơn giản. 'attr_accessor' có thể dễ dàng là một ngôn ngữ riêng biệt được xây dựng bằng ngôn ngữ khác (liên quan: các thuộc tính trong C#, v.v.). Trong Ruby, nó chỉ là một phương pháp khác. –
Câu trả lời hay. Trong khi đúng là lớp eigenclass và singleton có nghĩa là cùng một thứ trong Ruby, thì thứ hai bây giờ là thuật ngữ ưa thích, như được chỉ ra bởi sự tồn tại của các phương thức 'singleton_class',' singleton_methods' và 'define_singleton_method'. –