访问公共方法与公共常量Ruby
我是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 如我所料 语法不同,因为您可以执行以下
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:
是一个名称空间解析操作符。它帮助您访问模块中的项,或类或常量中的类级项。它用于提供名称空间,以便方法和类名不会与其他类冲突。