Ruby 在类中定义常量 + 类变量
2017-10-21 本文已影响227人
changsanjiang
常量
在 class 语句中可以定义常量.
class HelloWorld
Version = "1.0"
end
对于在类中定义的常量, 我们可以像下面这样使用::
通过类名来实现外部访问.
p HelloWorld::Version #=> "1.0"
类变量
以 @@开头的变量称为类变量. 类变量是该类所有实例的共享变量, 这一点与常量类似, 不同的是我们可以多次修改类常量的值. 另外, 与实例变量一样, 从类的外部访问类变量时也需要存取器. 不过, 由于 attr_accessor 等存取器都不能使用, 因此需要直接定义.
如下:
class HelloCount
attr_accessor :name
@@count = 0 # 记录调用 hello 方法的次数
def self.count # 读取调用次数的类方法
@@count
end
def initialize(name)
@name = name
end
def hello
@@count += 1 # 累加调用次数
puts "Hello, world. I am #{name}.\n"
end
end
bob = HelloCount.new("Bob")
bob.hello
tom = HelloCount.new("Tom")
tom.hello
san = HelloCount.new("San")
san.hello
p HelloCount.count
=begin
Hello, world. I am Bob.
Hello, world. I am Tom.
Hello, world. I am San.
3
=end