【发布时间】:2015-09-29 11:24:16
【问题描述】:
我现在正在学习 Ruby 中的并行赋值运算符。当我尝试使用它来交换数组中的值时,我得到了意想不到的结果。无法在网上找到答案,希望有人能阐明这里发生的事情。
第一个例子:
array = [1,2,3]
=> [1, 2, 3]
array[0,1] = array[1,0]
=> []
array
=> [2, 3] #thought this would be = [2,1,3]
array[0] 去了哪里,为什么 Ruby 不交换值?
第二个例子:
array = [1,2,3]
=> [1, 2, 3]
array[0,1] = [1,0]
=> [1, 0]
array
=> [1, 0, 2, 3] #was expecting [1,0,3]
为什么 Ruby 将右侧插入数组而不替换值?
【问题讨论】:
-
首先检查
array[1,0]单独做了什么——返回[]ruby-doc.org/core-2.2.0/Array.html#method-i-5B-5D你使用的是Array[start, length]符号,所以用那个符号交换元素的前提是不正确的。
标签: arrays ruby syntax assignment-operator parallel-assignment