输出哈希值的方法

时间:2013-06-28 15:33:05

标签: ruby

假设我有两个共享一个键的哈希值(例如“foo”)但值不同。现在我想创建一个带有一个属性的方法,该属性根据我选择的哈希值作为属性来输出键的值。我该怎么做?

我试过了:

def put_hash(hash)
   puts hash("foo")
end

但是当我用哈希调用这个函数时,它给出了下面的错误:

undefined method `hash' for main:Object (NoMethodError) 

3 个答案:

答案 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#[]

  

元素参考 - 检索与关键对象

对应的值对象