0
はどのようにこのモジュールが別のモジュール内にネストされていることを単に"module self :: X"と "module X"の違いは何ですか?
module GenName
ノートから
module self::GenName
異なっています。
はどのようにこのモジュールが別のモジュール内にネストされていることを単に"module self :: X"と "module X"の違いは何ですか?
module GenName
ノートから
module self::GenName
異なっています。
module M1
puts "self = #{self}"
module self::GenName
puts Module.nesting
def self.gen_name
end
end
end
# self = M1
# M1::GenName
# M1
以来、私たちは
M1
は驚きとして来るべき
module M1
module M1::GenName
puts Module.nesting
def self.gen_name
end
end
end
# M1::GenName
# M1
と同じであることがわかります。 GenName
が参照されている(例えば)
M1::GenName.methods(false)
#=> [:gen_name]
です。私たちが代わりに
module M2
module GenName
puts Module.nesting
def self.gen_name
end
end
end
# M2::GenName
# M2
を書く場合は、
M2::GenName.methods(false)
#=> [:gen_name]
これは、Rubyはどちらの場合もGenName
同じ方法を参照することを示しています。 self.
が追加されても違いはないと私は確信していますが、私は上記のことが証明に足りないと考えています。
本当です。 'self ::'を追加することはほとんど常に無意味であり、厳密に要求される機会はあまりにも明白ではありません。 – tadman