这是一些代码:
class Person def initialize(age) @age = age end def age @age end def age_difference_with(other_person) (self.age - other_person.age).abs end protected :age end
我想知道的是 using@age和self.ageinage_difference_with方法之间的区别。
@age
self.age
age_difference_with
写入@age直接访问实例变量@age。写入self.age告诉对象向自身发送消息age,该消息通常会返回实例变量@age——但可以根据age方法在给定子类中的实现方式执行任何数量的其他操作。例如,您可能有一个 MiddleAgedSocialite 类,它总是报告其年龄比实际年龄小 10 岁。或者更实际地,PersistentPerson 类可能会懒惰地从持久存储中读取该数据,并将其所有持久数据缓存在哈希中。
age