Skip to content

Instantly share code, notes, and snippets.

@frekw
Created December 8, 2009 15:43
Show Gist options
  • Save frekw/251735 to your computer and use it in GitHub Desktop.
Save frekw/251735 to your computer and use it in GitHub Desktop.
class Button
def initialize
@listeners ||= []
end
def add_listner(listener = nil, &blk)
if block_given?
@listeners << blk
unless listener.nil? # borde kolla att listener är lambda här
@listeners << listener
end
def remove_listener(listener)
@listeners.delete(listener)
end
def did_change
@listeners.each { |l| l.call(self) }
end
def press # anropas när knappen blir klickad på
# knappen gör något fränt här
did_change()
end
end
button = Button.new
# någonstans i din kod
i = 0
button.add_listener do |x|
i = i + 1
puts "jag har blivit tryckt på #{i} gånger"
end
# någonannanstans
lyssnare = lambda { |x| puts "en annan lyssnare" }
button.add_listener(lyssnare)
button.press()
button.remove_listener(lyssnare)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment