这里是代码示例:
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
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, mils) 传递给 add_observer 的 observer ( Notifier.new
), 但是我不明白: Notifier
只有 update
没有 initialize
,这样别的地方传过来的参数也是直接传给 update
的吗?
还有一个不明白的地方是:这里传递的参数 self
是不变的还是变化的?如果是不变的,那么是在传递给 Notifier.new
的时候是 car
这个 instance 吗,还是其他的?