从数组ruby创建对象集群

时间:2015-01-25 07:56:15

标签: ruby arrays

从下面的代码我试图从数组中创建对象,然后通过引用它们的索引位置将对象分层。

 $array = ['a','b','c','d','e','f','g']

 class Stuff
   attr_accessor :object_name
   def initialize(x)
     @x = x
   end
   def object_name
     "object #{@x}"
   end
 end

 def number(i)
   n = $array.index(i)
   n += 1
 end

 puts $array.map { |i|  i = Stuff.new(number(i)).object_name }


 #=>
 object 1
 object 2
 object 3
 object 4
 object 5
 object 6
 object 7

但是,我试图将它们分成五组。如何重新排列代码,以便输出以这种方式出现(重复的一到五个链)......

 #=>
 object 1
 object 2
 object 3
 object 4
 object 5
 object 1
 object 2
 ...

我尝试过某些循环变化,但输出结果是Array类对象,而我正在寻找Fixnum类作为输出。

1 个答案:

答案 0 :(得分:0)

只需将数字除以组大小并获得余数。由于我们在Ruby中有0索引数组,因此增加。

$array = ['a','b','c','d','e','f','g']

class Stuff
  attr_accessor :number
  def initialize(number, group=5)
    @number = (number % group) + 1
  end

  def object_name
    "object #{@number}"
  end
end

puts $array.map.with_index { |e, idx| Stuff.new(idx).object_name }

无需再创建一个数组来存储索引。

此外,应非常谨慎地使用全局变量。 Looky-look here.

HTH