我是Ruby的新手,正在尝试了解ruby中的模块方法。
trace_code
如果我调用模块或类,则会得到以下异常。 (M1:模块的未定义方法“ add_comment”)
答案 0 :(得分:1)
通常,您可以使用惰性初始化程序来解决此问题:
def comments
@comments ||= [ ]
end
除非已定义,否则将用空数组填充@comments
的地方。
这使add_comment
方法变得多余,因为您可以这样做:
comments << comment
没有任何中介。
现在请注意,comments
方法被定义为 mixin方法,而不是独立方法。这意味着它不存在,直到该模块上的某些其他模块或类调用include
。
使其独立:
def self.comments
@comments ||= [ ]
end
现在您可以执行以下操作:
M1.comments << 'New comment'