以下是代码:
class Notifier
def update(car, miles)
puts "The car has logged #{miles} miles, totaling #{car.mileage} miles traveled."
puts "The car needs to be taken in for a service!" if car.service <= car.mileage
end
end
require 'observer'
class Car
include Observable
attr_reader :mileage, :service
def initialize(mileage = 0, service = 3000)
@mileage, @service = mileage, service
add_observer(Notifier.new)
end
def log(miles)
@mileage += miles
changed
notify_observers(self, miles)
end
end
car = Car.new(2800, 3000)
car.log(100)
car.log(100)在这里,方法notify_observers(self, miles)将把*args (这里是self, miles)传递给由add_observer创建的观察者(Notifier.new实例)。我说得对吗?
关于上面的代码,我有两个问题:
Notifier只有一个方法update,没有initialize。那么*args (self, miles)将直接传递给update?self在self, miles中是静态的还是动态的?是car还是别的什么?发布于 2014-07-15 09:37:19
self时,notify_observers将成为一个值。因此,在本例中,它将是您正在调用的Car实例(car)。https://stackoverflow.com/questions/24754158
复制相似问题