Ruby - 在哈希中设置值

时间:2012-03-17 08:42:58

标签: ruby

任何人都想解释为什么我在这里收到错误:

[~]$ irb
>> h = Hash
=> Hash
>> h["a"] = 100
NoMethodError: undefined method `[]=' for Hash:Class
from (irb):2

但不在这里:

>> h = {'dog' => 'canine'}
=> {"dog"=>"canine"}
>> h["a"] = 100
=> 100

2 个答案:

答案 0 :(得分:7)

您需要致电Hash.new。使用您的代码,您将Hash类分配给h,而不是它的实例。

irb(main):001:0> h = Hash
=> Hash
irb(main):002:0> h.class.name
=> "Class"
irb(main):003:0> h = Hash.new
=> {}
irb(main):004:0> h.class.name
=> "Hash"

答案 1 :(得分:3)

你需要写h = Hash.new,一切都会好的。否则,您将引用该类的方法,而不是实例。这可以按预期工作:

h = Hash.new
h['dog'] = 5