2013-08-22 36 views
12

Cho một lớp cha mẹ có cách nào để chèn mã cho mỗi lớp con khi tải không? I E.Ruby: Thực thi mã cho mỗi lớp con

Given: ParentClass, làm thế nào để chèn mã như vậy:

class ChildClass < ParentClass 
    execute_function 

    ... 
end 

cho tất cả các lớp con của ParentClass?

+0

gì nếu những lớp học đã được nạp? Mã này nên làm gì? –

+0

@SergioTulentsev Err, làm cách nào để một lớp được tải nếu cha mẹ của nó không được tải? – meagar

+0

@meagar: đêm khuya và tôi đang đặt câu hỏi ngớ ngẩn :) –

Trả lời

13

Trong ParentClass ghi đè lên các phương pháp di truyền

class ParentClass 
    def self.inherited(subclass) 
     execute_function 
     super 
    end 
    ... 
end 

Xem: http://ruby-doc.org/core-2.0/Class.html#method-i-inherited

+0

wow ... đã dành rất nhiều thời gian để tìm kiếm điều này. nó sẽ là chính xác để sử dụng 'super (subclass)' cho an toàn chính xác? – s12chung

+2

Bạn có thể nhưng không bắt buộc. 'super' không có đối số sẽ gọi phương thức trong lớp cha với cùng tên bằng cách sử dụng cùng các đối số. – kristenmills

+0

wow. cảm ơn! Tôi cũng không biết điều đó: – s12chung