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

访问公共方法与公共常量Ruby,ruby,Ruby,我是Ruby新手,我仍在努力理解基础知识。为此,我无法在互联网上找到信息。想象一下这个例子: class Person AGE = 18 def self.get_age 18 end end 从控制台: Person.get_年龄 =>18 人的年龄 =>Person:Class的命名错误:未定义的方法年龄 为什么会有这种语法上的差异 尝试Person::AGE和Person::get_AGE,两者都会产生相同的结果: =>18 如我所料 语法不同,因为您可以执行以下

我是Ruby新手,我仍在努力理解基础知识。为此,我无法在互联网上找到信息。想象一下这个例子:

class Person

  AGE = 18
  def self.get_age
    18
  end

end
从控制台:

Person.get_年龄

=>18

人的年龄

=>Person:Class的命名错误:未定义的方法年龄

为什么会有这种语法上的差异

尝试
Person::AGE
Person::get_AGE
,两者都会产生相同的结果:

=>18

如我所料

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

班级人员
年龄=18
自我年龄
19
结束
结束
Person::AGE
将返回18,因为您正在访问一个常量。
Person.AGE
将返回19,因为您正在访问一个方法


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

“::是常量分隔符,而.是调用分隔符的方法。”-不完全正确。您可以使用
调用方法
Person::new
user::persisted?
,等等。正确但容易混淆,因为必须确保该方法不以大写字母开头,否则需要使用括号来确保它将调用该方法。我希望始终遵循这个rubocop规则:(我将尝试重新表述我的断言)。添加到@SergioTulentsev
是一个名称空间解析操作符。它帮助您访问模块中的项,或类或常量中的类级项。它用于提供名称空间,以便方法和类名不会与其他类冲突。