如何进行质量变量赋值

时间:2017-05-16 11:04:32

标签: ruby-on-rails ruby

我有这样的哈希:

user_info = {
    user_id: 1,
    first_name: "Henry",
    last_name: "Avery",
    phone_number: 1234567890,
    address: "United Kingdom",
}

当我收到这个哈希时,我需要分配许多这样的变量:

user_id = user_info[:user_id]
first_name = user_info[:first_name]
last_name = user_info[:last_name]
phone_number = user_info[:phone_number]
address = user_info[:address]

令人讨厌,并使代码有更多不必要的行。即使我将所有这些都放在一个句子中,它也会变得混乱,这条线太长了:

user_id, first_name, last_name, phone_number, address = user_info[:user_id], user_info[:first_name], user_info[:last_name], user_info[:phone_number], user_info[:address]

您是否知道将哈希值分配给变量的更快捷方式? 谢谢。

2 个答案:

答案 0 :(得分:1)

这一行

user_id, first_name, last_name, phone_number, address = user_info[:user_id], user_info[:first_name], user_info[:last_name], user_info[:phone_number], user_info[:address]

可能是

user_id, first_name, last_name, phone_number, address = user_info.values_at(:user_id, :first_name, :last_name, :phone_number, :address)

虽然它也很长,但我知道

答案 1 :(得分:1)

您也可以使用OpenStruct,如下所示:

o=OpenStruct.new(user_info)

然后,你可以像这样访问变量:

o.user_id