我正在尝试更改特定坐标,但数组正在全部更新。
目标是改变fixed
属性为单个坐标。
class Case
attr_accessor :fixed
def initialize
self.fixed = false
end
def fixed?
!!fixed
end
end
def display(arr)
5.times do |x|
5.times do |y|
print arr[x][y].fixed?
print ' '
end
puts
end
end
# Defining array
arr = Array.new(5){ Array.new(5, Case.new) }
# Displaying the arrays
display(arr)
# Changing value of a single coord
arr[2][3].fixed = true
# Displaying the arrays
display(arr)
这是第一次显示调用的结果
false false false false false
false false false false false
false false false false false
false false false false false
false false false false false
和第二个显示器
false false false false false
false false false false false
true true true true true
false false false false false
false false false false false
预期结果是:
false false false false false
false false false false false
false false false true false
false false false false false
false false false false false
问题是您多次将同一个实例放置在行中。要使数组中的每个项目成为一个新对象,请将数组定义更改为以下内容:
arr = Array.new(5){ Array.new(5) {Case.new} }
请参阅此问题以获取更多信息:如何创建对象数组?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)