2017-02-24 1 views
0

Ist es nicht bevorzugt each verketten und mit with_index wie dieseIst es akzeptabel, jedes und with_index zu verketten?

array.each_with_index { ... } 

oder Verkettung durchaus akzeptabel?

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

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

+2

Beachten Sie, dass [Enumerator # with_index] (http://ruby-doc.org/core -2.3.0/Enumerator.html # method-i-with_index) (im Gegensatz zu [Enumerable # each_with_index] (http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-ea ch_with_index)) verwendet ein optionales Argument, das dem ersten Index entspricht (standardmäßig null). Also, wenn Sie möchten, dass die Indizierung bei "1" beginnt, sagen Sie, könnten Sie '.each.with_index (1)' anstatt '.each_with_index' schreiben. Wenn "i" die Blockvariable ist, kann dies die Notwendigkeit vermeiden, "i + 1" innerhalb des Blocks zu schreiben. –

Antwort

3

Beide Formulare sind korrekt und funktionieren. In dem aufgeführten Fall wird jedoch die erste Form bevorzugt, da sie die für diese Aufgabe entwickelte Methode verwendet.

Die zweite Form sollte normalerweise für Methoden reserviert werden, die eine nicht wie in diesem dummen Stück Code mit Index Option:

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

der als Ausgang hat:

["a", "c"] 
Verwandte Themen