E
Erwin Abbott
Hi,
The [] method is really handy when you have an object that should
behave like a hash or array. One thing I find myself wishing I could
also do is something like
def logins[](date)
@events.select{|e| e.action == :login and e.date == date}
end
There may be a better way to deal with this example, but this is just
to demonstrate the circumstances where you don't have an array or hash
called logins, but you'd like to be able to use that [] syntax. One
way I though about doing it is
def logins
EventList.new @events.select{|e| e.action == :login}
end
class EventList
def initialize data
@data = data
end
def [] date
@data.select{|e| e.date == date}
end
end
logins[Date.today] # => all logins today from @events
I guess some people might prefer to write a method like
get_logins(date), but I like this syntax. It seems reasonable to also
define []= in EventList to update the original @events. What I'd like
to know is if there's another way to solve this problem, or if there
are any simple optimizations (maybe only keep one instance of
EventList and update its contents with each call to #events).
Lastly, has there been any mention of allowing function names like so
in ruby 1.9:
def logins[] date
# ...
end
Thanks,
- Erwin
The [] method is really handy when you have an object that should
behave like a hash or array. One thing I find myself wishing I could
also do is something like
def logins[](date)
@events.select{|e| e.action == :login and e.date == date}
end
There may be a better way to deal with this example, but this is just
to demonstrate the circumstances where you don't have an array or hash
called logins, but you'd like to be able to use that [] syntax. One
way I though about doing it is
def logins
EventList.new @events.select{|e| e.action == :login}
end
class EventList
def initialize data
@data = data
end
def [] date
@data.select{|e| e.date == date}
end
end
logins[Date.today] # => all logins today from @events
I guess some people might prefer to write a method like
get_logins(date), but I like this syntax. It seems reasonable to also
define []= in EventList to update the original @events. What I'd like
to know is if there's another way to solve this problem, or if there
are any simple optimizations (maybe only keep one instance of
EventList and update its contents with each call to #events).
Lastly, has there been any mention of allowing function names like so
in ruby 1.9:
def logins[] date
# ...
end
Thanks,
- Erwin