Ruby 创建一大堆新对象
对编程非常陌生。我试图用我定义的新类在ruby中创建一堆新对象。例如,我的课堂:Ruby 创建一大堆新对象,ruby,class,object,Ruby,Class,Object,对编程非常陌生。我试图用我定义的新类在ruby中创建一堆新对象。例如,我的课堂: class Loser def initialize (fingers) @fingers = fingers end def fingerprint return @fingers end end 让我们假设我想让10个输家。第一个失败者有一个手指,第二个失败者有两个手指。。。等等 而不是经历 loser1 = Loser.new(1) loser2 = Loser.new(
class Loser
def initialize (fingers)
@fingers = fingers
end
def fingerprint
return @fingers
end
end
让我们假设我想让10个输家。第一个失败者有一个手指,第二个失败者有两个手指。。。等等
而不是经历
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,这完全不起作用。有什么建议吗。这可能很简单。我是新来的。试试这个:
losers = [];
1.upto(10) do |i|
losers << Loser.new(i)
end
这是怎么回事
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
这是非常基本的,你可以做很多事情使它更复杂,但我会给你一个简单的例子。可以将常量设置为跟踪类实例的数组。例如:
class Loser
LOSERS = []
def initialize(fingers)
@fingers = fingers
LOSERS << self
end
def fingerprint
LOSERS.count
end
end
但是,这完全取决于失败者数组中实例的数量。将失败者存储在一个数组中。当map可用时,基本上不应该使用这种模式:LOSERS=1.upto10.map{| i | Loser.newi}。@meagar:我忘了你可以在枚举器上使用map。谢谢漂亮,红润,优雅。对Ruby新手来说,理解起来有点困难,但无论如何+1。为什么要使用明显更神秘的&Lower。方法:new而不是{i | Lower.newi}?@meagar:它看起来很聪明,不会重复你的评论:
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
class Loser
LOSERS = []
def initialize(fingers)
@fingers = fingers
LOSERS << self
end
def fingerprint
LOSERS.count
end
end