Ruby – Array#<<和Array#push之间的区别
通过检查Ruby 1.9.3的文档,Array#<<和Array#push都被devise为在当前数组的末尾添加一个元素。 不过,两者似乎有细微的差别。
我遇到的一个是*操作符可以用来追加整个其他数组的内容到当前的,但只能用#push。
a = [1,2,3] b = [4,5,6] a.push *b => [1,2,3,4,5,6]
尝试使用#<<而不是给出各种错误,取决于它是否与点运算符和/或括号一起使用。
为什么#“#push不能以相同的方式工作? 其中一个不是别人的别名吗?
他们非常相似,但不完全相同。
<<
接受一个参数,并将其推到数组的末尾。
另一方面,推动接受一个或多个论点,把他们推到最后。
<<
只接受单个对象的事实就是为什么你看到错误。
<<
不工作,不push
<<
的原因是:
-
push
可以接受许多论点(这是什么时候你做*b
)。 -
<<
只接受一个参数。
另外要注意的一点是, <<
也是一个操作符。 它比三元运算符等运算符优先级低。 这可能会导致一些意想不到的结果。 例如:
arr1, arr2 = [], [] arr1.push true ? 1 : 0 arr1 # => [1] arr2 << true ? 1 : 0 arr2 # => [true]
Array#<<和Array#push之间的主要区别是
Array#<< # can be used to insert only single element in the Array Array#push # can be used to insert more than single element in the Array
另一个显着的区别是,在插入单个元素的情况下,
Array#<<比Array#push更快
标杆pipe理可以帮助您找出这两种方式的performance, 在这里find更多。
push
方法将一个项目追加到数组的末尾。它可以有多个参数。 <<
用于初始化数组,并且只能有一个参数,如果已经初始化,则在数组末尾添加一个元素。