假设我有两个共享一个键的哈希值(例如“foo”)但值不同。现在我想创建一个带有一个属性的方法,该属性根据我选择的哈希值作为属性来输出键的值。我该怎么做?
我试过了:
def put_hash(hash)
puts hash("foo")
end
但是当我用哈希调用这个函数时,它给出了下面的错误:
undefined method `hash' for main:Object (NoMethodError)
答案 0 :(得分:1)
您需要使用[]
:
puts hash["foo"]
否则Ruby认为您正在尝试使用()
调用方法,并且您看到错误,因为该范围内没有名为hash
的方法。
答案 1 :(得分:1)
你试过了吗?
def put_hash(hash)
puts hash["foo"]
end
或者更好:
def put_hash(hash)
puts hash[:foo]
end
Ruby将值存储在这样的哈希中:
{ :foo => "bar" }
或
{ "foo" => "bar" }
取决于您使用Symbol
还是String
要访问它们,您需要调用[]
Hash class
方法
The Ruby Docs始终是一个很好的起点。
答案 2 :(得分:0)
将其写为
def put_hash(hash)
puts hash["foo"]
end
h1 = { "foo" => 1 }
h2 = { "foo" => 2 }
put_hash(h2) # => 2
看这里Hash#[]
元素参考 - 检索与关键对象
对应的值对象