I wonder why ruby core method 'take_while' does not work as expected in
the
below Rails console example:
irb(main):003:0> arr = []
=> []
irb(main):004:0> arr << Date.today - 15.days
=> [Sun, 27 Jan 2013]
irb(main):005:0> arr << Date.today - 25.days
=> [Sun, 27 Jan 2013, Thu, 17 Jan 2013]
irb(main):006:0> arr << Date.today
=> [Sun, 27 Jan 2013, Thu, 17 Jan 2013, Mon, 11 Feb 2013]
irb(main):007:0> arr << Date.today + 10.days
=> [Sun, 27 Jan 2013, Thu, 17 Jan 2013, Mon, 11 Feb 2013, Thu, 21 Feb
2013]
irb(main):008:0> arr << Date.today + 25.days
=> [Sun, 27 Jan 2013, Thu, 17 Jan 2013, Mon, 11 Feb 2013, Thu, 21 Feb
2013,
Fri, 08 Mar 2013]
irb(main):009:0> arr << Date.today + 35.days
=> [Sun, 27 Jan 2013, Thu, 17 Jan 2013, Mon, 11 Feb 2013, Thu, 21 Feb
2013,
Fri, 08 Mar 2013, Mon, 18 Mar 2013]
irb(main):010:0> arr.size
=> 6
irb(main):011:0> jan = arr.take_while {|d| d.month == 1 }
=> [Sun, 27 Jan 2013, Thu, 17 Jan 2013]
irb(main):012:0> feb = arr.take_while {|d| d.month == 2 }
=> []
So, as you see, the first array that should contain January date only
worked fine, but not the second one, or February dates; Any idea?
Thanks and regards
on 2013-02-11 15:35
on 2013-02-11 15:48
On Mon, Feb 11, 2013 at 8:33 AM, Javix <s.cambour@gmail.com> wrote: > I wonder why ruby core method 'take_while' does not work as expected in the > below Rails console example: > > irb(main):003:0> arr = [] > => [] Enumerable#take_while short-circuits on nil or false, hence the while in it's name. Use Enumerable#select
on 2013-02-11 16:17
On Monday, February 11, 2013 3:46:46 PM UTC+1, Jordon Bedwell wrote:
> Yep, exact, 'select' works as needed. By the way, is there a way (I find
no method neither in Rails API for Array nor in Ruby core library, to
split
an array in sub-arrays by month ?
Thanks
on 2013-02-11 16:22
On Mon, Feb 11, 2013 at 9:15 AM, Javix <s.cambour@gmail.com> wrote: >> > => [] >> > Yep, exact, 'select' works as needed. By the way, is there a way (I find no > method neither in Rails API for Array nor in Ruby core library, to split an > array in sub-arrays by month ? date_array.chunk { |v| v.month }.map { |v| v.last }
on 2013-02-11 16:26
On Mon, Feb 11, 2013 at 9:20 AM, Jordon Bedwell <envygeeks@gmail.com> wrote: >> Yep, exact, 'select' works as needed. By the way, is there a way (I find no >> method neither in Rails API for Array nor in Ruby core library, to split an >> array in sub-arrays by month ? > > date_array.chunk { |v| v.month }.map { |v| v.last } You can also use group_by to turn it into a hash with the month as the key.
on 2013-02-11 16:26
On Monday, February 11, 2013 4:20:56 PM UTC+1, Jordon Bedwell wrote: > >> > the > > Thank ou again, it worked. I fiund another way to do that with group_by method: arr.group_by(&:month) the only difference will be that the result will be a hash and not an array. Regards
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.