2012-05-14 65 views
0

我有以下散列:紅寶石:包括另一哈希內的哈希

EMAIL_PWD_HASH = Hash.new 
EMAIL_PWD_HASH[ "email" ] = { "label" => EMAIL_STR, "type" => "email_field" } 
EMAIL_PWD_HASH[ "password" ] = { "label" => PWD_STR, "type" => "password_field" } 

及以下散列:

NEW_USER_HASH = Hash.new 
NEW_USER_HASH[ "first" ] = { "label" => FIRST_STR, "type" => "text_field" } 
NEW_USER_HASH[ "last" ] = { "label" => LAST_STR, "type" => "text_field" } 

NEW_USER_HASH[ "title" ] = { "label" => TITLE_STR, "type" => "text_field" } 
NEW_USER_HASH[ "bio" ] = { "label" => BIO_STR, "type" => "text_field" } 

我想補充的電子郵件地址和密碼,最後經過與之前NEW_USER_HASH生物。添加EMAIL_PWD_HASH的語法是什麼(順序很重要)?

+2

你想做什麼,該命令是重要的? – FlyingFoX

回答

1
NEW_USER_HASH.merge!(EMAIL_PAD_HASH) 

另請注意,紅寶石中的散列未訂購。

+2

從Ruby 1.9開始。 –

+1

@DaveNewton:他們是保持順序的,但他們仍然不支持順序排序,而且通常認爲依靠排序來排序是一個壞主意。 – Chuck

+0

我不會重新排序,但我認爲它們是保持順序的。這將在表單中使用(作爲示例)。 –

0

我不知道該怎麼辦,你問什麼,我懷疑這是可能的,但這裏是做你需要什麼快速和骯髒方式:

NEW_USER_HASH['email'] = EMAIL_PWD_HASH['email'] 
NEW_USER_HASH['password'] = EMAIL_PWD_HASH['password'] 
NEW_USER_HASH['bio']  = NEW_USER_HASH.delete('bio') # deletes bio and reinsert in the end 

emailpassword現在後按照你的要求,你可以在last之前和bio之前。 :)