Frage

Ich möchte ein paar Hash -Objekte in einer Sammlung speichern (in der Java -Welt betrachten sie als Liste). Ich suche online, um festzustellen, ob es in Ruby eine ähnliche Datenstruktur gibt und habe keine gefunden. Im Moment habe ich versucht, Hash zu retten a[] in Hash b[], aber habe Probleme mit dem Versuch, Daten aus Hash herauszuholen b[].

Gibt es integrierte Sammlungsdatenstrukturen auf Ruby? Wenn nicht, ist es, einen Hash in einer anderen Hash -Praxis zu retten?

War es hilfreich?

Lösung

Wenn es auf den Hash im Hash zugreift, der das Problem ist, versuchen Sie es mit:

>> p = {:name => "Jonas", :pos => {:x=>100.23, :y=>40.04}}
=> {:pos=>{:y=>40.04, :x=>100.23}, :name=>"Jonas"}
>> p[:pos][:x]
=> 100.23

Andere Tipps

Damit sollte es kein Problem geben.

a = {:color => 'red', :thickness => 'not very'}
b = {:data => a, :reason => 'NA'}

Vielleicht könnten Sie erklären, auf welche Probleme Sie begegnen.

Die Frage ist nicht ganz klar, aber ich denke, Sie möchten eine Liste (Array) von Hashes haben, oder?

In diesem Fall können Sie sie einfach in ein Array einfügen, was wie eine Liste in Java ist:

a = {:a => 1, :b => 2}
b = {:c => 3, :d => 4}
list = [a, b]

Sie können diese Hashes wie Liste [0] und die Liste [1] abrufen

Listen in Ruby sind Arrays. Sie können verwenden Hash.to_a.

Wenn Sie versuchen, Hash A mit Hash B zu kombinieren, können Sie verwenden Hash.Merge

Bearbeiten: Wenn Sie versuchen, Hash A in Hash B einzufügen, können Sie dies tun

b["Hash a"] = a;

Alle Antworten hier sind bisher von Hash in Hash, nicht von Hash Plus Hash. Aus Gründen der Vollständigkeit werde ich mich also einsachen:

# Define two independent Hash objects
hash_a = { :a => 'apple', :b => 'bear', :c => 'camel' }
hash_b = { :c => 'car', :d => 'dolphin' }

# Combine two hashes with the Hash#merge method
hash_c = hash_a.merge(hash_b)

# The combined hash has all the keys from both sets
puts hash_c[:a] # => 'apple'
puts hash_c[:c] # => 'car', not 'camel' since B overwrites A

Beachten Sie, dass wenn Sie B in A verschmolzen, alle Schlüssel, die A in B hatten, überschrieben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top