Rubyのコロンについて
Rubyのコロンの扱いについて確認します。
: (コロン1つ)
シンボル
:symbol { symbol: hash } instance.method(:symbol)
コロン1つを前に付けると、シンボルを表します。
また、ハッシュのキーの後ろに付けると、キーがシンボルになります。
使い分けとしてはデータとして扱わないもの
(ハッシュのキーなど)をシンボルにしたりします。
シンボルは immutable(変更不可)であるため、基本的には文字列などよりもメモリ使用量が少なく、高速に処理されます
- 文字列とシンボルのID比較
p 'abc'.object_id p 'abc'.object_id p :abc.object_id p :abc.object_id # 60 # 80 # 1042588 # 1042588
:: (コロン2つ)
定数やモジュール、クラスの呼び出し
module Hoge class Fuga CONST = '定数' def self.method puts 'ねんむい' end def method puts 'ねんむい' end end end puts Hoge::Fuga::CONST # 定数 puts Hoge::Fuga.CONST # error Hoge::Fuga.method # ねむい Hoge::Fuga.new.method # ねんむい
絶対パスを指定する
class Hoge def method puts 'FIRST' end end module Fuga class Hoge def method puts 'SECOND' end def self.call ::Hoge.new.method Hoge.new.method end end end Fuga::Hoge.call # FIRST # SECOND