with_indexを使った初期値の設定

どうも、引き続き競プロしています。

今回はよく使う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とかやらなくて良くなります!

では!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA