我找不到任何对此有意义的解释。
我试图找出如何访问我在模块中创建的变量,但不是在任何类中,即:
module Moddy
attr_accessor :var
var = "wibble"
class Squiggy
def Class_Method ()
end
end
end
我正试图弄清楚如何(如果可能的话)从'Squiggy'范围内以及需要Moddy的脚本范围内访问'var'。
答案 0 :(得分:3)
模块有点像无实例的类。因此,模块中定义的实例方法本身是无用的;你需要include
一个类中的模块才能使用它们。
这很重要,因为attr_accessor :var
基本上定义了两个实例方法:
def var
@var
end
def var= v
@var = v
end
如果您希望var = "wibble"
调用刚创建的实例方法,则需要self
成为Moddy
的实例,但在此上下文中{ {1}}仅为self
,因此您实际上只是创建了一个名为Moddy
的局部变量。
如果您希望var
拥有Moddy
,则需要从单例类中调用var
(因为attr_accessor
是其单例类的实例)。
Moddy
答案 1 :(得分:0)
module Moddy
attr_accessor :action
def initialize
@action= "wibble"
end
class Squiggy
include Moddy
def initialize
super
end
def put_var
puts @action
end
end
end
reference: Accessing instance variables declared in ruby modules