【发布时间】:2016-05-22 16:33:42
【问题描述】:
今天遇到了Array元素赋值的一些奇怪行为:
arr = ["a","b"]
arr2 = [1,2]
arr.unshift(arr2) #= [[1, 2], "a", "b"]
arr.push(arr2) #=> ["a", "b", [1, 2]]
这是有道理的,但是:
arr[0,0] = arr2 #=> [1, 2, "a", "b"]
我知道在[0,0] 中,第一个零是index,第二个是从index 开始的数组中要影响的元素数。
在我看来,它应该与unshift 相同,但事实并非如此。
谁能解释一下这种行为?
【问题讨论】:
-
为什么你认为
[]应该以与unshift相同的方式工作?它们是不同的方法。 -
@sawa 你说得对,那只是一件事,但你能解释一下 [0,0] 的行为吗?完全不同
-
我相信Array#[]= 的文档非常清楚:“
ary[start, length] = obj...从start元素的start索引中替换一个子数组[使用obj的元素] ”。在这里你可能会发现写arr.insert(0,arr2)更清楚。 (如果你想在arr的末尾插入arr2,你可以写arr[arr.size,0] = arr2或arr.insert(arr.size, *arr2))。注意与str[fixnum, fixnum] = new_str 的相似之处。
标签: arrays ruby ruby-on-rails-4