どうも、引き続き競プロしています。
今回はよく使うeach_with_indexにおいて、メソッドのindexの初期値を指定する方法です。
結論はeach.with_indexのようにメソッドをチェーンして引数に初期値を渡せばOKです。
コード
irb(main):011* ['a', 'b', 'c'].each_with_index do |word, index| # each_with_indexを使ってます。
irb(main):012* puts index
irb(main):013> end
0
1
2
=> ["a", "b", "c"]
irb(main):014* ['a', 'b', 'c'].each_with_index(1) do |word, index| # each_with_indexに引数を渡してもエラーになっちゃう
irb(main):015* puts index
irb(main):016> end
(irb):14:in `each': wrong number of arguments (given 1, expected 0) (ArgumentError)
irb(main):017* ['a', 'b', 'c'].each.with_index(1) do |word, index| # eachとwith_indexをチェーンして、引数を渡す
irb(main):018* puts index
irb(main):019> end
1
2
3
=> ["a", "b", "c"]
irb(main):020>
小技みたいな感じですが、やってみるとindex + 1とかやらなくて良くなります!
では!