我很惊讶地知道Ruby Array#push
(和Array#unshift
)可以在没有参数的情况下被调用而且什么都不做。
在我看来,当没有参数传递给这些方法时,提升ArgumentError
似乎是更合适的行为(就像Python中的append
一样)。
Array#push
(Array#unshift
)是否存在没有参数的用例?
答案 0 :(得分:3)
The documentation清楚地列出了一个强制性参数。
但是,Ruby Spec Suite显示了传递0个参数的示例。
MRI/YARV test suite也明确地表明传递0参数应该是可能的,但是有一条注释行实际上测试相反的,即传递0参数会引发异常,并且有一条注释说明这个特性是在Ruby 1.8中引入的。
因此,显然,在Ruby 1.6和更早版本中,曾经有一个强制参数,而Ruby 1.8引入了任意数量参数的可能性。我能想到的唯一用例是在不引发错误的情况下展开可能为空的数组或nil
。