我试图理解为什么我需要范围解析运算符来访问继承模块中的常量而不是方法。假设:
module Foo
SOMETHING = {:one => 1, :two => 2}
def showit
p SOMETHING
end
end
和
class Bar
include Foo
def initialize
# why doesn't method name need scope resolution but const does?
showit
p Foo::SOMETHING
end
还相关,您可以从Bar中访问Foo中声明的实例或局部变量吗?我试过这样的事情:
module Foo
@myar = "some string"
myvar2 = "some other string"
def showit
p @myvar
p myvar2
end
end
并在Bar类中调用showit ...打印@myvar导致nil和myvar2未定义。我希望两个字符串都可以打印......发生了什么事?
答案 0 :(得分:1)
您实际上不必对常量进行范围调整。
这应该运行得很好。
class Bar
include Foo
def initialize
showit
p SOMETHING # instead of Foo::SOMETHING
end
end
Bar.new