::
ページのタイトルとしてシュールすぎる。
Rubyにおいて、::として使用されるスコープを指定する演算子。
ドキュメントには名前がない。
クラス、モジュール内で定義された定数に外部からアクセスする際に使用する。
code:colon_colon.rb
module Hoge
FOO = "foo"
class Piyo
BAR = "bar"
end
end
puts Hoge::FOO
puts Hoge::Piyo
puts Hoge::Piyo::BAR
code:console
ruby colon_colon.rb
foo
Hoge::Piyo
bar
左辺のない::は、Objectに定義されている定数を参照する。 トップレベルで定義された定数はObjectクラスに定義されるため、トップレベルの定数にアクセスできる。 左辺のない::を使った定義は、どの階層に記述されていてもObject配下に定義される。 code:colon_colon_declaration.rb
module Hoge
class ::Piyo
end
end
puts Hoge
puts Hoge::Piyo
puts Piyo
code:console
ruby colon_colon_declaration.rb
Hoge
Traceback (most recent call last):
colon_colon_declaration.rb:7:in `<main>': uninitialized constant Hoge::Piyo (NameError)
Did you mean? Piyo
emacs colon_colon_declaration.rb
# puts Hoge::Piyoをコメントアウト
ruby colon_colon_declaration.rb
Hoge
Piyo