编程很新。我正在尝试使用我定义的新类在ruby中创建一堆新对象。例如,这是我的班级:
class Loser
def initialize (fingers)
@fingers = fingers
end
def fingerprint
return @fingers
end
end
所以我想说我想让10个输家。第一个失败者有1个手指,第二个失败者有2个手指......等等。
而不是通过
loser1 = Loser.new(1)
loser2 = Loser.new(2)
etc,
我以为我可以做点什么
array = [1,2,3,4,5,6,7,8,9,10]
array.each {|i| loser#{i} = Loser.new(i)}
我想要
puts Loser5.fingerprint
输出5完全不起作用。请给我任何建议。这可能非常简单。我是新人。
答案 0 :(得分:2)
试试这个:
losers = [];
1.upto(10) do |i|
losers << Loser.new(i)
end
编辑(信用@meager)如果你想缩短它:
losers = 1.upto(10).map {|i| Loser.new(i)}
答案 1 :(得分:2)
class Loser
def initialize (fingers)
@fingers = fingers
end
def fingerprint
return @fingers
end
end
losers = (1..10).map { |n| Loser.new(n) }
losers[4].fingerprint # => 5
答案 2 :(得分:1)
这是怎么回事?
class Loser
def initialize (fingers)
@fingers = fingers
end
def fingerprint
return @fingers
end
end
losers = 1.upto(10).map(&Loser.method(:new))
p losers[4].fingerprint # => 5
答案 3 :(得分:0)
这是非常基础的,你可以做很多事情来使这更复杂,但我会给你一个简单的例子。您可以将常量设置为跟踪类Loser实例的数组。例如:
class Loser
LOSERS = []
def initialize(fingers)
@fingers = fingers
LOSERS << self
end
def fingerprint
LOSERS.count
end
end
但是,这完全取决于LOSERS数组中的实例数。