[Ruby] Définissez la hiérarchie en même temps que l'initialisation de Hash avec la méthode tap

Je pense que c'est écrit dans un livre de référence, mais au lieu d'un mémorandum.

Par exemple

Lorsque vous souhaitez séparer un tableau contenant plusieurs éléments tels que les suivants avec un tableau associatif


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

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

Le code que j'ai écrit jusqu'à présent


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

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

J'ai récemment appris que je peux aussi écrire ceci

Étant donné que la méthode tap renvoie le self généré, je peux l'écrire proprement et je veux l'utiliser autant que possible.


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] Définissez la hiérarchie en même temps que l'initialisation de Hash avec la méthode tap
Dessinez un graphique à barres et un graphique linéaire en même temps avec MPAndroidChart
Comment supprimer le tweet associé à l'utilisateur lorsque vous le supprimez en même temps
[At Coder] Résolvez le problème ABC183 D avec Ruby
[At Coder] Résolvez le problème ABC182 D avec Ruby
Bureau Java avec le même frontal que le WEB.
[Java] Erreur d'appel de méthode lorsque l'héritage et l'implémentation de l'interface sont effectués en même temps
Hello World avec la bibliothèque d'extension Ruby pour le moment
Ruby / rexml: tournez chacun avec un élément du même nom