【问题标题】:What is the correct way to use variable symbols in a hash? [closed]在哈希中使用变量符号的正确方法是什么? [关闭]
【发布时间】:2015-02-13 15:48:48
【问题描述】:

我有两个数组:

people_keys   = ['id', 'name', 'email']
people_values = [[1, 'Tarzan', 'tarzan@jungle.com'],
                 [2, 'Jane',   'jane@jungle.com'  ]]

我想制作一组人:

people = []
people_values.each do |person_values|
  person = {}
  person_values.each_with_index do |person_value, index|
    person[people_keys[index]] = person_value
  end
  people.push( person )
end

这给了我以下结果:

people # => [{"id"=>1, "name"=>"Tarzan", "email"=>"tarzan@jungle.com"},
       #     {"id"=>2, "name"=>"Jane",   "email"=>"jane@jungle.com"  }]

我想制作idnameemail 符号而不是字符串, 所以我想出了以下内容:

我换了

person[people_keys[index]] = person_value

person[:"#{people_keys[index]}"] = person_value

这给了我以下结果:

people # => [{:id=>1, :name=>"Tarzan", :email=>"tarzan@jungle.com"},
       #     {:id=>2, :name=>"Jane",   :email=>"jane@jungle.com"  }]

这很好用,但似乎可以做得更好/更清洁, 但我找不到更好的解决方案。

我想知道这个问题是否有更好的解决方案。

【问题讨论】:

  • 这个问题似乎跑题了,因为它是关于改进工作代码的,这使它成为Code Review 的话题。
  • @theTinMan:这里是主题,在代码审查中是题外话:”可以问“此代码是否遵循常见的最佳实践?”,而不是“什么是关于 X 的最佳实践?'"。不同之处在于他问的是如何他可以改进它,而不是什么

标签: ruby variables hash key symbols


【解决方案1】:

你可以这样做:

people_values.map { |person| people_keys.map(&:to_sym).zip(person).to_h }

【讨论】:

    【解决方案2】:

    Ruby 的 String 类有一个 to_sym 方法:

    返回与 str 对应的符号,如果该符号以前不存在,则创建该符号。

    【讨论】:

    • ty,如果我用谷歌搜索“ruby string to symbol”,我可能应该找到它。出于某种原因,我在大多数搜索中都坚持使用“哈希”这个词。
    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 2023-04-09
    • 2021-06-28
    • 2013-08-09
    • 1970-01-01
    • 2010-12-08
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多