inject_with_index

Tags:

irb(main):001:0> arr = %w{a b c}
=> ["a", "b", "c"]

에서 a@0b@1c@2 를 출력한다면,

irb(main):003:0* require "enumerator"
=> true
irb(main):004:0> arr_iter = Enumerable::Enumerator.new(arr, :each_with_index)
=> #<Enumerable::Enumerator:0x2aaaaabc2bc0>
irb(main):005:0> arr_iter.inject("") { |a, (b, i)| a << "#{b}@#{i}" }
=> "a0@b1@c2@"

이제 [abc, 3]을 출력합니다. 이 때 3은 각 문자의 인덱스 0, 1, 2의 합

irb(main):007:0> arr_iter.inject { |(char_sum, val_sum), (b, i)| [char_sum + b, val_sum + i] }
=> ["abc", 3]

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *