T
Tim Waters
From the O'Reilly Cookbook there is code that keeps call functions in a
hash as a subscriber/listener type pattern. What I don't understand (or
I don't understand how it works is the line:
(@EventDispatcher_listeners[event] ||= []) << callback
module EventDispatcher
def setup_listeners
@EventDispatcher_listeners = {}
end
def subscribe(event, &callback)
(@EventDispatcher_listeners[event] ||= []) << callback
end
protected
def notify(event, *args)
if @EventDispatcher_listeners[event]
@EventDispatcher_listeners[event].each do |m|
m.call(*args) if m.respond_to? :call
end
end
return nil
end
end
hash as a subscriber/listener type pattern. What I don't understand (or
I don't understand how it works is the line:
(@EventDispatcher_listeners[event] ||= []) << callback
module EventDispatcher
def setup_listeners
@EventDispatcher_listeners = {}
end
def subscribe(event, &callback)
(@EventDispatcher_listeners[event] ||= []) << callback
end
protected
def notify(event, *args)
if @EventDispatcher_listeners[event]
@EventDispatcher_listeners[event].each do |m|
m.call(*args) if m.respond_to? :call
end
end
return nil
end
end