[Ruby] Definieren Sie die Hierarchie gleichzeitig mit der Initialisierung von Hash mit der Tap-Methode

Ich denke, es ist in einem Nachschlagewerk geschrieben, aber anstelle eines Memorandums.

Zum Beispiel

Wenn Sie ein Array mit mehreren Elementen wie den folgenden durch ein assoziatives Array trennen möchten


array = [1, 2, "a", 3, "b", "c", 4]

ideal_hash = {
  hoge: [1, 2, 3, 4],
  fuga: ["a", "b", "c"]
}

Der Code, den ich bisher geschrieben habe


ideal_hash = { hoge: [], fuga: [] }

array.each do |i|
  i.is_a?(Integer) ? hash[:hoge] << i : hash[:fuga] << i
end

Ich habe kürzlich gelernt, dass ich das auch schreiben kann

Da die Tap-Methode das generierte Selbst zurückgibt, kann ich es ordentlich schreiben und möchte es so oft wie möglich verwenden.


ideal_hash = { hoge: [], fuga: [] }.tap do |hash|
  array.each do |i|
    i.is_a?(Integer) ? hash[:hoge] << i : hash[:fuga] << i
  end
end

Recommended Posts

[Ruby] Definieren Sie die Hierarchie gleichzeitig mit der Initialisierung von Hash mit der Tap-Methode
Zeichnen Sie mit MPAndroidChart gleichzeitig Balkendiagramm und Liniendiagramm
So löschen Sie den dem Benutzer zugeordneten Tweet, wenn Sie ihn gleichzeitig löschen
[Bei Coder] Lösen Sie das ABC183 D-Problem mit Ruby
[Bei Coder] Lösen Sie das ABC182 D-Problem mit Ruby
Java-Desktop mit demselben Frontend wie das WEB.
[Java] Fehler beim Methodenaufruf, wenn Vererbung und Schnittstellenimplementierung gleichzeitig ausgeführt werden
Hallo Welt mit Ruby-Erweiterungsbibliothek vorerst
Ruby / rexml: Drehen Sie jedes mit einem Element mit dem gleichen Namen