Câu hỏi này liên quan trực tiếp đến this one. Nhưng tôi đã cố gắng chia nhỏ nó thành vấn đề cơ sở và tôi không muốn nhập thêm văn bản vào hộp câu hỏi khác. Vì vậy, ở đây đi:Làm thế nào để thêm vào các phân lớp
Tôi biết rằng tôi có thể bao gồm classmethods bằng cách mở rộng mô-đun ClassMethods và bao gồm nó thông qua Module # include hook. Nhưng tôi có thể làm tương tự với giao diện người dùng không? Dưới đây là ví dụ của tôi:
lớp Foo:
class Foo
def self.bar
'Base Bar!'
end
end
lớp Extensions:
module Extensions
module ClassMethods
def bar
'Extended Bar!'
end
end
def self.prepended(base)
base.extend(ClassMethods)
end
end
# prepend the extension
Foo.send(:prepend, Extensions)
lớp FooE:
require './Foo'
class FooE < Foo
end
và startscript đơn giản:
require 'pry'
require './FooE'
require './Extensions'
puts FooE.bar
Khi tôi bắt đầu tập lệnh, tôi không nhận được Extended Bar!
như tôi mong đợi nhưng thay vì Base Bar!
. Tôi cần thay đổi gì để hoạt động bình thường?
Very nice! Cảm ơn rất nhiều. Rõ ràng là tôi không biết những gì mở rộng. – Nessuno
Tuyệt vời, cảm ơn ... – Fabio