Ruby `each_with_object` index
Ich würde das gerne machen a.each_with_object
mit index
, in einem besseren Weg, als dieses:
a = %w[a b c]
a.each.with_index.each_with_object({}) { |arr, hash|
v,i = arr
puts "i is: #{i}, v is #{v}"
}
i is: 0, v is a
i is: 1, v is b
i is: 2, v is c
=> {}
Gibt es eine Möglichkeit, dies zu tun, ohne v,i = arr
?
- Was ist
hash
tun? - Warum nicht einfach
each_with_object({}).with_index
?! - Ja, das ist es, was ich verwenden, nun, ich weiß, ich kann die Gruppe Werte, die innerhalb zwischen || =)
- Gut, @toro2. Leser sollten beachten Sie, dass hier die block-Variablen wäre
|(e,h),i|
, woe
ist das element des Arraysa
,h
ist das hash-Objekt erstellt und zurückgegeben wird, undi
ist der index.map.with_index
ist eine weitere gemeinsame Nutzung vonwith_index
. Wenn Sie nicht tackwith_index
an das Ende der Enumerable-Methode können Sie Ihr vorausgehen miteach_with_index
eher alseach.with_index
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt
können Sie tun
In deinem Beispiel
.each.with_index
redundant ist. Ich fand diese Lösung:Könnten Sie ersetzen Ihre Letzte Zeile mit
aber, wie @sawa vorgeschlagen, vereindeutigung der array-argument ist das, was hier zu tun. Ich sage nur dies als etwas gelagert werden für einen anderen Tag.