我想解释一下Ruby中我在Koans中跑过的一些行为

我想解释一下Ruby中我在Koans中跑过的一些行为

问题描述:

为什么下面的第二个assert_equal工作?红宝石如何将“dos”与两个关联起来?我想解释一下Ruby中我在Koans中跑过的一些行为

def test_default_value 

    hash2 = Hash.new("dos") 
    hash2[:one] = 1 

    assert_equal 1, hash2[:one] 
    assert_equal "dos", hash2[:two] 
    end 

的参数Hash.new是“默认”值 - 当一个键不存在,并读取,返回值来代替。您也可以将一个块传递给Hash.new,以使默认值的行为更加复杂。

http://ruby-doc.org/core-1.8.7/Hash.html#method-c-new

+0

非常感谢! – 2012-02-01 23:19:10

+0

还要注意,它每次都返回相同的值,所以使用字符串的默认值(这是可变的)是不明智的。至少,你想冻结它。 – 2012-02-02 04:55:08