在 Ruby 中,为什么插入分配给数组索引 return 的变量未定义?

In Ruby, why does plugging in a variable assigned to an array index return undefined?

我正在学习Ruby,刚刚解决了这个金字塔问题。无论出于何种原因,我试图将 twoD[0] 更改为变量 twoDidx (见第三行)。

但是,当我尝试用 while twoDidx.length != 1 替换 while twoD[0].length != 1 时,我得到“未定义”。我不了解变量的工作原理是什么?谢谢。

def pyramid_sum(base)
  twoD = [base] 
  twoDidx = twoD[0]

  while twoD[0].length != 1
    arr = twoD[0].map.with_index do |num, idx| 
      if idx != twoD[0].length - 1
        num + twoD[0][idx + 1]
      end
    end
    arr = arr.compact
    twoD.unshift(arr)
  end

  return twoD
end

print pyramid_sum([1, 4, 6]) #=> [[15], [5, 10], [1, 4, 6]]

twoDidxtwoD[0]有很大的区别。 twoDidx 是对 twoD 的第一个元素的引用 在您进行赋值时 twoD[0] 是对 [ 的第一个元素的引用=14=]执行时的数组。

为了让它更明显:

array = [1]
first = array[0] # Here you just assign 1 to the variable
array = [100]

first #=> 1
array[0] #=> 100