Arrays 在Ruby中创建具有坐标的对象数组?
我有一个这样的物体Arrays 在Ruby中创建具有坐标的对象数组?,arrays,ruby,loops,Arrays,Ruby,Loops,我有一个这样的物体 class Place def initialize(x,y) @x = x @y = y end end 因此,我必须模拟大小为X,Y的动态网格。例如3x5(宽度,高度) 我需要保存数组中的所有“Place”对象,以及所有可能的值,Place(1,1)、Place(1,2)、Place(1,3)。。。位置(3,5) 我试过这种方法(在网格内) 但它不起作用。我该怎么做?改变 @places = Array.new(width * height)
class Place
def initialize(x,y)
@x = x
@y = y
end
end
因此,我必须模拟大小为X,Y的动态网格
。例如3x5(宽度
,高度
)
我需要保存数组中的所有“Place”对象,以及所有可能的值,Place(1,1)、Place(1,2)、Place(1,3)。。。位置(3,5)
我试过这种方法(在网格内)
但它不起作用。我该怎么做?改变
@places = Array.new(width * height)
到
Array#push
在数组的末尾创建一个新元素,因为您已经创建了一个包含一定数量元素的数组,然后将更多元素推入其中-您可能首先观察到宽度*高度
元素为零
的变化
@places = Array.new(width * height)
@places = (0...width).to_a.product((0...height).to_a).map do |x, y|
Place.new(x,y)
end
到
Array#push
在数组末尾创建一个新元素,因为您已经创建了一个包含一定数量元素的数组,然后将更多元素推入其中-您可能首先观察width*height
元素为nil
@places = (0...width).to_a.product((0...height).to_a).map do |x, y|
Place.new(x,y)
end
感谢@tadman,将有三点范围来排除范围中的紧边界([0,宽度)
)。这使得元素数量完全相等宽度
和高度
感谢@tadman,将有三个点的范围来排除范围中的紧边界([0,宽度)
)。这使得元素的数量完全相等宽度
和高度
一个Ruby约定是用于变量和方法的名称。您不必遵守,但99%以上的Rubiest遵守。您可能指的是0…宽度
,其中相当于0..width-1
。宽度10表示y中的11个条目我们的数组与您的代码不符,这是错误的。Ruby的一个约定是用于变量和方法的名称。您不必遵守,但99%以上的Rubiest遵守。您可能指的是0…width
,这相当于0..width-1
。width 10表示数组中有11个条目与您的代码不符。。
vs。。
vs。
这里也是。