Pregunta

Me gustaría salvar algunos objetos a una colección de hash (en el mundo Java pensar en ella como una lista). Yo busco en línea para ver si hay una estructura de datos similar en Ruby y he encontrado ninguna. Por el momento es que he estado tratando de salvar a[] de comprobación aleatoria, b[] hachís, pero he estado teniendo problemas tratando de obtener los datos de b[] hash.

¿Hay estructuras de datos de recopilación integradas en Ruby? Si no es así, es el ahorro de un hash en otro hash de la práctica común?

¿Fue útil?

Solución

Si se trata de tener acceso el hash en el hash que es el problema vuelva a intentarlo:

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

Otros consejos

No debe haber ningún problema con eso.

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

Tal vez podría explicar lo que está encontrando problemas.

La cuestión no es del todo claro, pero creo que usted quiere tener una lista (array) de hashes, ¿verdad?

En ese caso, sólo puede ponerlos en una matriz, que es como una lista en Java:

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

Puede recuperar esos valores hash como lista [0] y la lista [1]

Listas en Ruby son matrices. Puede usar Hash.to_a .

Si usted está tratando de combinar hash de una de almohadilla B, puede utilizar Hash.merge

EDIT: Si está intentando insertar una almohadilla en la almohadilla b, puede hacerlo

b["Hash a"] = a;

Todas las respuestas aquí hasta ahora son sobre Hash en Hash, Hash Hash no más, así que, por razones de exhaustividad, voy a interrumpiría con esto:

# 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

Tenga en cuenta que cuando combina B en A, cualquier clave que A había que están en B son sobrescritos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top