从下面的代码我试图从数组中创建对象,然后通过引用它们的索引位置将对象分层。
$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类作为输出。
答案 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