Ruby hash.key错误

时间:2014-01-26 16:54:16

标签: ruby hash

我觉得我在这里忽略了一些东西。当我尝试使用Hash.key(keytolookfor)方法时,我收到错误。

此方法是否已弃用?

pete@Vader:~/tmp$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
pete@Vader:~/tmp$ ./hashtest.rb
./hashtest.rb:8: undefined method `key' for {"firstkey"=>"firstvalue", "secondkey"=>"secondvalue"}:Hash (NoMethodError)
pete@Vader:~/tmp$

脚本如下。

#!/usr/bin/ruby

testHash = Hash.new
testHash["firstkey"] = "firstvalue"
testHash["secondkey"] = "secondvalue"

if testHash.has_value?("secondvalue")
    keyvalue = testHash.key("secondvalue")
    puts "match found with key #{keyvalue}"
else
    puts "no match found"
end

2 个答案:

答案 0 :(得分:2)

我猜测你的系统ruby /usr/bin/ruby是1.8.7,它没有Hash#key方法。 ruby -v最有可能显示位于rvm的{​​{1}}版本,但脚本中的第一行会调用~/.rvm/...

答案 1 :(得分:0)

使用脚本的堆记录,如下所示:

#/usr/bin/env ruby

这将选择系统rvmrbenv指定的默认ruby版本。由于Ruby 1.8.7没有Hash#key,因此请确保至少运行Ruby 1.9.1:

$ /usr/bin/ruby -v
1.9.1p0

或者,改为使用Hash#[]

keyvalue = testHash["secondvalue"]