坐标我在Ruby类Point
这样的:阵列中的红宝石
class Point
attr_accessor :x,:y
def initialize(*args)
@y,@x=args
end
end
如何创建点的数组[1 ... N]?非常感谢!
坐标我在Ruby类Point
这样的:阵列中的红宝石
class Point
attr_accessor :x,:y
def initialize(*args)
@y,@x=args
end
end
如何创建点的数组[1 ... N]?非常感谢!
只需创建一个数组并将您的观点放在那里。你在哪里遇到麻烦?
irb(main):008:0> p1 = Point.new(0,0)
=> #<Point:0x007fa671a56a08 @y=0, @x=0>
irb(main):010:0> p2 = Point.new(1,1)
=> #<Point:0x007fa6720f21c8 @y=1, @x=1>
irb(main):011:0> points = [p1,p2]
=> [#<Point:0x007fa671a56a08 @y=0, @x=0>, #<Point:0x007fa6720f21c8 @y=1, @x=1>]
鉴于这样的构造,它很容易转换,从一个结构到另一个:
[ [1,2], [3,4], [5,6] ].collect { |t| Point.new(*t) }
# => [#<Point:0x007f904a049ed0 @y=1, @x=2>, #<Point:0x007f904a049e58 @y=3, @x=4>, #<Point:0x007f904a049db8 @y=5, @x=6>]
这里*t
代表原始阵列上的splat operation,有效地传递参数,而不是直接作为数组。
简单:
(1..n).map { |i| Point.new(1, i) }
完整的示例:在Ruby中
class Point
attr_accessor :x,:y
def initialize(*args)
@y,@x=args
end
end
n = 10
array_of_coords = (1..n).map { |i| Point.new(1, i) }
你能解释一下吗,我该怎么启动和使用它? –
定义** n **变量,例如'n = 10'。而已。该表达式将返回一个数组。 –
我怎么样?我还是不明白,请给我举个例子。谢谢! –
阵列,像许多语言中,都是零指数的,所以它会是'点[0。 .N-1]'。 – tadman
@tadman:对不起,我的意思是'Point [0..n-1]',你能帮我吗?谢谢 –
我刚才添加了一个答案。 – tadman