怎么样
module self::GenName
与简单
不同 module GenName
请注意,此模块嵌套在另一个模块中。
答案 0 :(得分:1)
由于
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.
没有区别,但我也认为上述内容不足以证明。