2014-04-05 201 views
0

坐标我在Ruby类Point这样的:阵列中的红宝石

class Point 

    attr_accessor :x,:y 

    def initialize(*args) 
     @y,@x=args 
    end 

end 

如何创建点的数组[1 ... N]?非常感谢!

+0

阵列,像许多语言中,都是零指数的,所以它会是'点[0。 .N-1]'。 – tadman

+0

@tadman:对不起,我的意思是'Point [0..n-1]',你能帮我吗?谢谢 –

+0

我刚才添加了一个答案。 – tadman

回答

0

只需创建一个数组并将您的观点放在那里。你在哪里遇到麻烦?

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>] 
0

鉴于这样的构造,它很容易转换,从一个结构到另一个:

[ [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,有效地传递参数,而不是直接作为数组。

0

简单:

(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) } 
+0

你能解释一下吗,我该怎么启动和使用它? –

+0

定义** n **变量,例如'n = 10'。而已。该表达式将返回一个数组。 –

+0

我怎么样?我还是不明白,请给我举个例子。谢谢! –