在Ruby语法中::是什么意思?
什么是在Ruby语法中::是什么意思?,ruby,Ruby,什么是: @song ||= ::TwelveDaysSong.new 返回@song 如果@song为false(例如它不存在) 创建:twevedaysong对象的新实例@song这是一种惰性初始化@song实例变量的方法 如果已将@song设置为某个真实值,即不是nil或false),则表达式的计算结果就是该值 但是,如果尚未将@song设置为该值,则它将创建类TwelveDaysSong的新实例,并将其分配给@song。然后,与前面一样,表达式的计算结果为@song,但该值现在是对新创
:
@song ||= ::TwelveDaysSong.new
返回
@song
如果@song
为false(例如它不存在)创建
:twevedaysong
对象的新实例@song这是一种惰性初始化@song
实例变量的方法
如果已将@song
设置为某个真实值,即不是nil
或false
),则表达式的计算结果就是该值
但是,如果尚未将@song
设置为该值,则它将创建类TwelveDaysSong
的新实例,并将其分配给@song
。然后,与前面一样,表达式的计算结果为@song
,但该值现在是对新创建的twevedaysong
对象的引用
在类名上使用:
意味着它是一个绝对的顶级类;即使在当前模块中定义了twevedaysong
类,它也将使用顶级类 红宝石::(双分号)
顶级常量由双冒号引用
class TwelveDaysSong
end
a = TwelveDaysSong.new
#I could wrote it like this too
a = ::TwelveDaysSong.new
module Twelve
class TwelveDaysSongs
end
end
b = Twelve::TwelveDaysSong.new
#b is not equal to
a = ::TwelveDaysSong.new
#neither
a = TwelveDaysSong.new
类也是常量,所以如果有常量
HELLOWOLRD = 'hw'
您可以这样称呼它::HELLOWORLD我知道名称空间,但我没有看到没有前缀的::used。我想这就是让我困惑的原因。我现在明白了,它指的是根级别的对象名称空间