访问公共方法与公共常量Ruby

时间:2019-07-02 11:19:29

标签: ruby

我是Ruby的新手,我仍在尝试了解基本知识。为此,我无法在Internet上找到信息。想象一下这个例子:

class Person

  AGE = 18
  def self.get_age
    18
  end

end

从控制台:

  

Person.get_age

=> 18

  

Person.AGE

=> NoMethodError: undefined method AGE' for Person:Class

为什么语法会有这种差异?

尝试Person::AGEPerson::get_age的结果相同:

=> 18 如我所料。

1 个答案:

答案 0 :(得分:2)

语法不同,因为您可以执行以下操作:

class Person
  AGE = 18
  def self.AGE
    19
  end
end

Person::AGE将返回18,因为您正在访问常量。
Person.AGE将返回19,因为您正在访问方法。

基本上,::是常量分隔符,而.是调用分隔符的方法(当以下单词以大写字母开头且表达式中没有括号时)。