【问题标题】:Add key-value for Ruby Hash from within the Hash从哈希中为 Ruby 哈希添加键值
【发布时间】:2014-06-04 09:24:11
【问题描述】:

从哈希对象本身向哈希对象添加键值对的最佳方法是什么?

我知道的向哈希添加新键的常用方法如下:

hash = Hash.new
hash[:key] = 'value'
hash[:key] # => 'value'

如果我不想创建一个在创建后已经拥有此密钥的新哈希怎么办?

hash = Hash.new
hash[:key] # => 'value'

这可能吗?谢谢!

【问题讨论】:

  • 您能解释一下您想要实现的目标吗?不是很清楚。
  • 我不知道是谁,但我不得不说,因为问题不够清楚而对其他人投反对票的人不应该出现在可以帮助人们的网站上。如果问题不够清楚,可以改进。
  • @xdazz 我更新了问题。
  • 你想创建一个默认值..看到这个new(obj) → new_hash
  • @ArupRakshit 看起来像是一个答案,而不仅仅是评论,如果这能解决问题,请重新发布作为答案。

标签: ruby hash key-value


【解决方案1】:

要使用已经初始化的一组值创建一个哈希,您可以这样做:

hash = { :key => 'value' }
hash[:key]    # ===> This evaluates to 'value'

请记住,在 Ruby 中创建空哈希的惯用方法是:

hash = {}

不像你举例的hash = Hash.new

【讨论】:

    【解决方案2】:

    你的意思是设置默认值吗?是这样的,你可以这样做:

    hash = Hash.new('value')
    hash[:key] # => 'value'
    

    【讨论】:

    • 是的.. 这就是我的意思。但它是一个默认值。不要想,它被添加到任何键。当不存在任何键时,如果要访问该键,将返回默认值。
    【解决方案3】:

    不确定你的意思我其他答案不是你想要的,你可以创建一个散列,其中一些键和值已经像这样填充

    hash = {:key => 'value'} #{:key=>"value"}
    

    就像其他人说的那样,key 的默认值还没有出现,是通过在创建时将一个块传递给哈希来给出的,比如

    hash = Hash.new('value') #{}
    hash[:test] #"value"
    

    h = Hash.new { |hash, key| hash[key] = "Go Fish: #{key}" } #{}
    h[:test] #"Go Fish: test"
    

    来自http://www.ruby-doc.org/core-1.9.3/Hash.html的最后一个样本teken

    【讨论】:

      猜你喜欢
      • 2014-01-02
      • 2011-07-01
      • 1970-01-01
      • 2013-12-17
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      相关资源
      最近更新 更多