美文网首页
Ruby 在类中定义常量 + 类变量

Ruby 在类中定义常量 + 类变量

作者: changsanjiang | 来源:发表于2017-10-21 11:33 被阅读227次

常量

在 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

相关文章

网友评论

      本文标题:Ruby 在类中定义常量 + 类变量

      本文链接:https://www.haomeiwen.com/subject/ftkiuxtx.html