我想解释一下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
,以使默认值的行为更加复杂。
非常感谢! – 2012-02-01 23:19:10
还要注意,它每次都返回相同的值,所以使用字符串的默认值(这是可变的)是不明智的。至少,你想冻结它。 – 2012-02-02 04:55:08