Ruby:如何通过继承挂钩回调
发布时间:2020-12-17 02:28:07 所属栏目:百科 来源:网络整理
导读:关于回调(和继承),我遇到了一些关于 Ruby的麻烦.这是我的代码: class Lmao def initialize @str = "HAHAHAHAHAHHAHAHAH" @before_laughing = [] end def self.inherited(base) base.extend(Callbacks) end def laughing @before_laughing.each {|method| se
关于回调(和继承),我遇到了一些关于
Ruby的麻烦.这是我的代码:
class Lmao def initialize @str = "HAHAHAHAHAHHAHAHAH" @before_laughing = [] end def self.inherited(base) base.extend(Callbacks) end def laughing @before_laughing.each {|method| send(method) } @str end end module Callbacks def before_laughing(*methods) @before_laughing = methods end end class Lol < Lmao before_laughing :downcase_please def downcase_please @str.downcase! end end a = Lol.new a.laughing # => "HAHAHAHAHAHHAHAHAH" 正如你所看到的,我之前的笑回调不起作用……因为数组@before_laughing是空的.我相信这可以通过编辑我将*方法保存到Lol的实例方法(来自Callbacks内部)的方式来解决.但我真的不明白…… 如果你知道解决方案,谢谢你的光! 解决方法
感谢Mon_Ouie,解决方案是:
class Lmao def initialize @str = "HAHAHAHAHAHHAHAHAH" end def self.inherited(base) base.extend(Callbacks) end def laughing self.class.callbacks_before_laughing.each {|method| send(method) } @str end end module Callbacks def before_laughing(*methods) @before_laughing = methods end def callbacks_before_laughing @before_laughing end end class Lol < Lmao before_laughing :downcase_please def downcase_please @str.downcase! end end 非常棒. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |