2011-06-22 53 views
10

Làm cách nào tôi có thể tạo băm trong băm, với băm được lồng có khóa để xác định nó. Ngoài ra các yếu tố mà tôi tạo ra trong băm lồng nhau, làm thế nào tôi có thể có chìa khóa cho họ cũngcách tạo băm trong băm

ví dụ

test = Hash.new() 

#create second hash with a name?? test = Hash.new("test1")?? 
test("test1")[1] = 1??? 
test("test1")[2] = 2??? 

#create second hash with a name/key test = Hash.new("test2")??? 
test("test2")[1] = 1?? 
test("test2")[2] = 2?? 

cảm ơn bạn

+4

Chào mừng bạn đến với SO. Nếu Joel đã trả lời câu hỏi của bạn, hãy nhấp vào dấu kiểm bên cạnh câu trả lời để đánh dấu câu trả lời đó là câu trả lời đã chọn. – pcg79

Trả lời

19
my_hash = { :nested_hash => { :first_key => 'Hello' } } 

puts my_hash[:nested_hash][:first_key] 
$ Hello 

hoặc

my_hash = {} 

my_hash.merge!(:nested_hash => {:first_key => 'Hello' }) 

puts my_hash[:nested_hash][:first_key] 
$ Hello 
+3

Hoặc trong "1.9" cú pháp mới 'h = {car: {tires:" Michelin ", engine:" Wankel "}}' –

+0

Chỉ cần làm rõ, {tires: 1} tương đương với {: tires => 1 }, và giá trị có thể được lấy ra bằng cách sử dụng hash [: tires]. Chỉ cần di chuyển dấu hai chấm vào cuối tên và thả '=>'. – Kudu

13

Joel là những gì tôi sẽ làm, nhưng cũng có thể làm điều này:

test = Hash.new() 
test['test1'] = Hash.new() 
test['test1']['key'] = 'val' 
4
h1 = {'h2.1' => {'foo' => 'this', 'cool' => 'guy'}, 'h2.2' => {'bar' => '2000'} } 
h1['h2.1'] # => {'foo' => 'this', 'cool' => 'guy'} 
h1['h2.2'] # => {'bar' => '2000'} 
h1['h2.1']['foo'] # => 'this' 
h1['h2.1']['cool'] # => 'guy' 
h1['h2.2']['bar'] # => '2000'