[英]Ruby method as block
当前,我的Rails应用程序中有一个类,它将类作为事件处理程序(回调)进行调用:
class MyClass
#Event handler hooks:
def on_event1(&block)
@on_event1 = block
end
def on_event2(&block)
@on_event2 = block
end
#Event triggers:
def do_event1
@on_event1.call if @on_event1
end
def do_event2
@on_event2.call if @on_event2
end
end
初始化:
mc = MyClass.new
#===== Event handlers: =====
mc.on_event1 do
#do some stuff
end
mc.on_event2 do
#do some stuff
end
我想将事件处理程序放入单独的类中,将它们从块转换为方法:
class MyClassHandlers
def self.event1_handler
#do some stuff
end
def self.event2_handler
#do some stuff
end
end
如何在应该给出块的地方调用方法?
我想将事件绑定视为:
mc = MyClass.new
mc.on_event1 = MyClassHandlers.event1_handler
mc.on_event2 = MyClassHandlers.event2_handler
您可以使用lambdas:
mc = MyClass.new
mc.on_event1 = lambda { MyClassHandlers.event1_handler }
mc.on_event2 = lambda { MyClassHandlers.event2_handler }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.