How to define ???
type on below code:
class Events
alias EventHandlers = Hash(String, Array(???))
@handlers : EventHandlers
def initialize
@handlers = EventHandlers.new
end
def add_handler(name, &block)
unless @handlers[name]?
@handlers[name] = Array(???).new
end
@handlers[name] << block
end
def fire_event(name, payload)
if handlers = @handlers[name]?
handlers.map(&.call(payload))
end
end
end
Using previous code
events = Events.new
events.add_handler("custom_event") do |payload|
puts payload.inspect
end
event.fire_event("custom_event", payload: { foo: :bar })
If it’s Proc
, I must specify types like Proc(*T, R)
, but I don’t want to care about Proc
what’s returning, sometimes String
, Int32
, Nil
or anythingelse.