سؤال

أرغب في إنقاذ بعض كائنات التجزئة إلى مجموعة (في عالم جافا يفكر في ذلك كقائمة). أنا أبحث عبر الإنترنت لمعرفة ما إذا كان هناك بنية بيانات مماثلة في Ruby وتم العثور عليها لا شيء. في الوقت الحالي كنت أحاول حفظ التجزئة a[] في تجزئة b[], ، ولكن تمتلك مشكلات في محاولة للحصول على البيانات خارج التجزئة b[].

هل هناك أي هياكل بيانات مجمعة مدمجة على روبي؟ إن لم يكن، هو إنقاذ التجزئة في ممارسة تجزئة أخرى مشتركة؟

هل كانت مفيدة؟

المحلول

إذا كان الوصول إلى التجزئة في التجزئة هذه هي المشكلة ثم حاول:

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

نصائح أخرى

لا ينبغي أن يكون هناك أي مشكلة في ذلك.

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

ربما يمكنك شرح المشاكل التي تواجهها.

السؤال ليس واضحا تماما، لكنني أعتقد أنك تريد أن يكون لديك قائمة (صفيف) من التجزئة، أليس كذلك؟

في هذه الحالة، يمكنك فقط وضعها في صفيف واحد، وهو مثل قائمة في Java:

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

يمكنك استرجاع تلك القائمة في القائمة [0] وقائمة [1

قوائم في Ruby هي صفائف. يمكنك استخدام hash.to_a..

إذا كنت تحاول الجمع بين التجزئة A مع Hash B، فيمكنك استخدامها hash.merge

تحرير: إذا كنت تحاول إدراج Hash A في Hash B، فيمكنك القيام به

b["Hash a"] = a;

جميع الإجابات هنا حتى الآن تدور حول التجزئة في التجزئة، وليس التجزئة بالإضافة إلى التجزئة، لذلك لأسباب اكتمال، سوف تتناغم مع هذا:

# 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 إلى أ، يتم الكتابة فوق أي مفاتيح في B في B.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top