Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 是否有无参数的数组推(unshift)用例?_Ruby - Fatal编程技术网

Ruby 是否有无参数的数组推(unshift)用例?

Ruby 是否有无参数的数组推(unshift)用例?,ruby,Ruby,我很惊讶Ruby的Array#push(和Array#unshift)可以在没有参数的情况下调用,它们什么都不做 在我看来,当没有参数传递给这些方法时,提出ArgumentError似乎是更合适的行为(就像Python中的append) 是否有无参数的Array#push(Array#unshift)用例?明确列出了一个必需参数 但是,显示了传递0个参数的示例 还显式地表明传递0参数应该是可能的,但是有一个注释行实际测试了相反的结果,即传递0参数将引发异常,并且有一个注释说这个特性是在Ruby

我很惊讶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