-1

对编程非常陌生。我正在尝试使用我定义的新类在 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 这完全不起作用。请有任何建议。这可能非常简单。我是新的。

4

4 回答 4

2

尝试这个:

losers = [];
1.upto(10) do |i|
  losers << Loser.new(i)
end

如果您想让它更短一点,请编辑(归功于@meager):

losers = 1.upto(10).map {|i| Loser.new(i)}
于 2013-11-05T15:25:26.783 回答
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
于 2013-11-05T15:26:16.513 回答
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
于 2013-11-05T15:28:58.523 回答
0

这是非常基本的,你可以做很多事情来使它更复杂,但我会给你一个简单的例子。您可以将常量设置为跟踪 Loser 类实例的数组。例如:

class Loser 

LOSERS = []

  def initialize(fingers)
    @fingers = fingers
    LOSERS << self
  end

  def fingerprint
    LOSERS.count
  end
end

但是,这完全取决于 LOSERS 数组中的实例数量。

于 2013-11-05T15:35:44.230 回答