我试图了解如何在Ruby中的现有类中创建类的新实例。我在Stack Overflow上找到了一个例子,但是它并不清楚现有类的值是如何传递给新实例的。 (如果我使用的是术语权。)
在下面的示例中,我有两个类, RaceCar 和 RaceDriver 。初始化时 RaceDriver 设置名称,体验= 0 , winnings = 0 并确保没有分配汽车爱好。
初始化时 RaceCar 设置汽车的号,类型, damage = 0 , racing_status:ready ,并设置驱动程序。
我想要做的是在 RaceDriver , set_driverscar 中创建一个方法,为驱动程序创建一个汽车,创建 RaceCar.new 但是将驱动程序设置为 RaceDriver 的名称。它是否处于初始化状态并不重要,我只想弄明白。
我将如何在下面的示例中执行此操作?
我一直在打扰这一点,我一定会错过一些明显的东西,但我无法弄明白或找到一个很好的例子来解释如何做到这一点?
你能帮我解答一下,这样我就可以了解到我在这里缺少什么吗?
class RaceDriver
attr_accessor :name, :experience, :winnings, :car
def initialize(attrs = {})
set_name(attrs [:name])
@experience = 0
@winnings = 0
@car = nil
end
private
def set_name(obj)
obj == nil ? no_name : @name = :name
end
def no_name
raise 'There is no name for this driver'
end
end
class RaceCar
attr_accessor :racing_number, :type, :damage, :racing_status, :driver
def initialize(attrs = {})
@racing_number = generate_number
@type = "stock"
@damage = 0
@racing_status = :ready
set_driver(attrs[:driver])
end
def disable
@racing_status = :disabled
end
private
def generate_number
rand(20..99)
end
def set_driver(obj)
obj == nil ? no_driver : @driver = obj
end
def no_driver
raise "A car has to have a driver to compete!"
end
end