2017-02-24 23 views
0

は、それがこのそれぞれとwith_indexを連結することは可能ですか?

array.each_with_index { ... } 

ようeachとしてwith_indexを連結しないことが望ましいか、連結が完全に受け入れているのですか?

array.each.with_index { ... } 
+1

のhttp:/ /stackoverflow.com/questions/20258086/difference-between-each-with-index-and-each-with-index-in-ruby –

+2

[Enumerator#with_index](http://ruby-doc.org/core)に注意してください。 -2.3.0/Enumerator.html#method-i-with_index)([Enumerable#each_with_index]とは異なります(http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-ea ch_with_index))は、最初のインデックスと等しいオプションの引数をとります(デフォルトは0です)。ですから、インデックス付けを '1'で始めるには、' .each_with_index'ではなく '.each.with_index(1)'と書くことができます。 'i'がブロック変数であれば、これはブロック内に' i + 1'を書く必要を避けることができます。 –

答えて

3

これらの形式はどちらも正しいものであり、動作します。しかしながら、リストされたケースでは、このタスクのために構築された目的のメソッドを使用するので、最初の形式が優先されます。

第2の形態は、通常、コードのこの愚かなビットのように、インデックスオプションではありません方法のために確保されるべきである:

['a', 'b', 'c', 'd'].select.with_index {|_d, i| (i%2)==0} 

出力として有する:

["a", "c"] 
関連する問題