Rav*_*rag 50 ruby arrays append
通过检查Ruby 1.9.3的文档,Array#<<和Array#push被设计为实现将元素附加到当前数组的末尾.但是,两者之间似乎存在微妙的差异.
我遇到的是*运算符可用于将整个其他数组的内容追加到当前数组,但只能使用#push.
a = [1,2,3]
b = [4,5,6]
a.push *b
=> [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
尝试使用#<<代替它会产生各种错误,具体取决于它是否与点运算符和/或括号一起使用.
为什么#<<不像#push那样工作?一个人实际上不是另一个的别名吗?
Aks*_*ite 10
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
Run Code Online (Sandbox Code Playgroud)
另一个显着的区别是,在插入单个元素的情况下,
Array#<<比Array#push快
这里需要注意的另一个重点是,<<它也是一个运营商.并且它的优先级低于三元运算符等一些运算符.这可能会导致一些意想不到的结果.例如:
arr1, arr2 = [], []
arr1.push true ? 1 : 0
arr1
# => [1]
arr2 << true ? 1 : 0
arr2
# => [true]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26433 次 |
| 最近记录: |