我是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::AGE
和Person::get_age
的结果相同:
=> 18
如我所料。
答案 0 :(得分:2)
语法不同,因为您可以执行以下操作:
class Person
AGE = 18
def self.AGE
19
end
end
Person::AGE
将返回18,因为您正在访问常量。
Person.AGE
将返回19,因为您正在访问方法。
基本上,::
是常量分隔符,而.
是调用分隔符的方法(当以下单词以大写字母开头且表达式中没有括号时)。