Ruby 是否有无参数的数组推(unshift)用例?
我很惊讶Ruby的Ruby 是否有无参数的数组推(unshift)用例?,ruby,Ruby,我很惊讶Ruby的Array#push(和Array#unshift)可以在没有参数的情况下调用,它们什么都不做 在我看来,当没有参数传递给这些方法时,提出ArgumentError似乎是更合适的行为(就像Python中的append) 是否有无参数的Array#push(Array#unshift)用例?明确列出了一个必需参数 但是,显示了传递0个参数的示例 还显式地表明传递0参数应该是可能的,但是有一个注释行实际测试了相反的结果,即传递0参数将引发异常,并且有一个注释说这个特性是在Ruby
Array#push
(和Array#unshift
)可以在没有参数的情况下调用,它们什么都不做
在我看来,当没有参数传递给这些方法时,提出ArgumentError
似乎是更合适的行为(就像Python中的append
)
是否有无参数的Array#push
(Array#unshift
)用例?明确列出了一个必需参数
但是,显示了传递0个参数的示例
还显式地表明传递0参数应该是可能的,但是有一个注释行实际测试了相反的结果,即传递0参数将引发异常,并且有一个注释说这个特性是在Ruby 1.8中引入的
因此,显然,在Ruby 1.6和更早版本中,曾经有一个强制参数,Ruby 1.8引入了任意数量参数的可能性。我能想到的唯一一个用例是在不引起错误的情况下释放一个可能为空的数组或
nil
。您提到的用例似乎并不少见。例如,<代码>[1,2]1,2。推送(*[3,4,4,4,2.1.2)。推送(*[3,4,5.5.3.5。推推送(*[3,4,4,4.4.5。推送(*[3,3,4,4,4,4,5.5)。推送(*[3,4,4.1.1.2。推送(*[1,1,1,2.1,2.2。推送(*[1,1,1,2.1,2)。推送(*[1,1,1,2.2。推送(*[3,1,1,1,2.1,2)。推送(*[3,1,1,1,1,2。1,1,2)。推推送(*[3,1,1,1,1,1,1,2.2)。推送(*[1,1,1,1,1,2)。推送(*[1,1,1,2。1,2]。这不仅仅是在浪费一个潜在的空数组。以下所有返回[“a”,“b”]
:[“a”,“b”].push(*{})
,[“a”,“b”].push(*Set.new)
和[“a”,“b”].push(*3..1)
(可能是因为splat将它们全部转换为数组)。但是,[“a”,“b”].push(*)()#=>[“a”,“b”和“]
。让我们反向思考这个问题:参数错误是否有任何用例?为什么需要这样做?如果没有参数的Array#concat
不会引发ArgumentError
?如果Array#concat
和