疑似赋值bug

moon version:0.1.20240520 (536892a 2024-05-20)
代码如下:


  let width = 5
  let height = 5
  
  let data = FixedArray::make(width, FixedArray::make(height, false))
  
  println(data[0][0])
  println(data[1][0])
  println("------")
  data[0][0] = true
  println(data[0][0])
  println(data[1][0])
  println("------")
  data[1][0] = false
  println(data[0][0])
  println(data[1][0])

输出如下:

false
false
------
true
true
------
false
false

这是赋值bug吗? :smiling_face_with_tear:

这不是 bug,你创建的二维数组实际上 data[0], data[1], data[2] 指向的都是同一个数组,如果你需要它们指向不同的数组则需要为 data[0], data[1], data[2] 都新分配一个数组

fn init {
  let width = 5
  let height = 5
  
  let data = @fixedarray.new_with_index(width, fn { _ => FixedArray::make(height, false) })
  
  println(data[0][0])
  println(data[1][0])
  println("------")
  data[0][0] = true
  println(data[0][0])
  println(data[1][0])
  println("------")
  data[1][0] = false
  println(data[0][0])
  println(data[1][0])
}
2 个赞