使用@name
和name
(使用attr_reader
)有什么区别?他们使用不同的路径方式:@name
是直接的,而name
使用方法来达到@name
。但除此之外,有什么区别吗?结果是一样的。
答案 0 :(得分:2)
但除此之外没有任何区别,因为结果是一样的。
除此之外?不多。只是attr_reader
为您提供了一种方法(如您所知),因此您可以对方法执行所有操作:公共/私有,装饰,覆盖子类,包含模块等等
哦,实例变量也很难从课外访问。这就是attr_reader
和相关助手存在的原因(为了在公共方法中轻松包装ivars)。