From: George Date: 2007-12-28T21:50:53+09:00 Subject: Re: Enumerable Integer? Nah. Integer#times Enumerator! On Dec 28, 2007 8:55 AM, Trans wrote: > Just a little FYI. > > Not too long ago I noted this suggestion: > > class Integer > alias_method :each, :times > include Enumerable > end > > Which is kind of cool in that allows some convenient statements like > > 10.collect { |i| "No. #{i}" } > 10.select { |i| i % 3 == 0 } > > And so forth. This is nice, but, of course, the downside is that this > clutters up Integer with all these Enumerable methods. > > Thankfully, and this is the FYI, Ruby 1.9 has Integer#times returning > an Enumerator. So most of these same functionality can be had just by > inserting #times in between: > > 10.times.collect { |i| "No. #{i}" } > 10.times.select { |i| i % 3 == 0 } > > This is great IMHO, so I thought I'd share. My only aside is the > thought that perhaps there's still a good reason to add Integer#to_a -- > to save us the intermediate object of times.to_a. Or is that too much > of a YAGNI? Hi Trans, Thanks for the FYI. For what it's worth, I can't say I'm really a fan of 10.times.select--it doesn't seem very clear to me what's being iterated over. 10.select even less so. I think good ol' (0...10).select looks better. *shrug* Similarly, 10.to_a returning [0,1,...,9] doesn't really feel right to me. In fact, I'd probably expect 10.to_a to do the same as Array(10) (and changing the latter may well break things). Just my thoughts. Regards, George.