Class variables 和 Class instance variables 的区别 http://snippets.aktagon.com/snippets/299-Class-variables-vs-Class-instance-variables-in-Ruby http://railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/
class A
class << self
attr_reader :i
end
@i = 1
def he
@u = 1
end
end
A.i #=>1
这些东西自己学比较枯燥的,大家讨论还是个不错的方式。
class << self 这个是所谓的 eigenclass,貌似比较高深,不知道是不是常用的写法,是否有更简单的?
类也是对象,类的实例变量 和 对象的实例变量没什么区别。
类的实例变量和类变量同样是绑定在类上的,但还是有区别的:
class A
@i = "ivar"
@@i = "class var"
# 实例方法可以访问类变量, 但不能访问类的实例变量
def f
p @i #=> nil
p @@i #=> "class var"
end
end
A.new.f
class B < A
p @i # nil
p @@i # "class var"
end
想避免污染子类的话推荐用类的实例变量,然后用类上的方法访问
class A
# 类上的方法可以访问类的实例变量
def A.i
@i
end
end