/ / Съхранява ли хеш в друга често срещана практика на хеш? - рубин, хеш, хеш-хеш

Запазва ли хеш в друга често срещана практика на хеш? - рубин, хеш, хеш-хеш

Бих искал да запазя някои хеш предметиколекция (в света на Java мисля за нея като списък). Търся онлайн, за да проверя дали има подобна структура от данни в Ruby и не са открили такива. Засега се опитвах да спася хеш a[] в хеш b[], но са имали проблеми, опитвайки се да получат данни от хеш b[].

Има ли вградени структури от данни за събиране на Ruby? Ако не, запазва хеш в друга често срещана практика на хеш?

Отговори:

3 за отговор № 1

Ако има достъп до хеш в хеш, който е проблем, опитайте следното:

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

2 за отговор № 2

Не трябва да има никакъв проблем с това.

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

Може би бихте могли да обясните какви проблеми срещате.


2 за отговор № 3

Въпросът не е напълно ясен, но мисля, че искате да имате списък (масив) от хешове, нали?

В този случай можете просто да ги поставите в един масив, който е като списък в Java:

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

Можете да изтеглите тези хешове като списък [0] и списък [1]


1 за отговор № 4

Списъците в Ruby са масиви. Можеш да използваш Hash.to_a.

Ако се опитвате да комбинирате хеш а с хеш б, можете да го използвате Hash.merge

EDIT: Ако се опитвате да вмъкнете хеш в хеш б, можете да го направите

b["Hash a"] = a;

1 за отговор № 5

Всички отговорите дотук са за хеш в хеш, а не хеш плюс хеш, така че заради изчерпателност, аз ще викам с това:

# 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

Обърнете внимание, че когато слеете B в A, всички ключове, които А са в B, се заличават.