模块底层的Ruby作用域
我找不到任何有意义的解释 我试图找出如何访问我在模块中创建的变量,但不是在任何类中创建的变量,即:模块底层的Ruby作用域,ruby,scope,Ruby,Scope,我找不到任何有意义的解释 我试图找出如何访问我在模块中创建的变量,但不是在任何类中创建的变量,即: module Moddy attr_accessor :var var = "wibble" class Squiggy def Class_Method () end end end 我试图弄清楚如何(如果可能的话)从“Squiggy”的范围内以及从需要Moddy的脚本的范围内访问“var” module Moddy attr_accessor :a
module Moddy
attr_accessor :var
var = "wibble"
class Squiggy
def Class_Method ()
end
end
end
我试图弄清楚如何(如果可能的话)从“Squiggy”的范围内以及从需要Moddy的脚本的范围内访问“var”
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
模块有点像没有实例的类。因此,模块中定义的实例方法本身是无用的;您需要
将该模块包含在类中才能使用它们
这很重要,因为attr\u accessor:var
本质上定义了两个实例方法:
def var
@var
end
def var= v
@var = v
end
如果您想调用刚刚创建的实例方法,您需要将self
作为Moddy
的实例,但是在这个上下文中self
只是Moddy
,所以您实际上只是创建了一个名为var
的局部变量
如果希望Moddy
拥有var
,则需要从singleton类调用attr\u accessor
(因为Moddy
是其singleton类的一个实例)
Moddy模块
类模块有点像没有实例的类。因此,模块中定义的实例方法本身是无用的;您需要将该模块包含在类中才能使用它们
这很重要,因为attr\u accessor:var
本质上定义了两个实例方法:
def var
@var
end
def var= v
@var = v
end
如果您想调用刚刚创建的实例方法,您需要将self
作为Moddy
的实例,但是在这个上下文中self
只是Moddy
,所以您实际上只是创建了一个名为var
的局部变量
如果希望Moddy
拥有var
,则需要从singleton类调用attr\u accessor
(因为Moddy
是其singleton类的一个实例)
Moddy模块
类模块有点像没有实例的类。因此,模块中定义的实例方法本身是无用的;您需要将该模块包含在类中才能使用它们
这很重要,因为attr\u accessor:var
本质上定义了两个实例方法:
def var
@var
end
def var= v
@var = v
end
如果您想调用刚刚创建的实例方法,您需要将self
作为Moddy
的实例,但是在这个上下文中self
只是Moddy
,所以您实际上只是创建了一个名为var
的局部变量
如果希望Moddy
拥有var
,则需要从singleton类调用attr\u accessor
(因为Moddy
是其singleton类的一个实例)
Moddy模块
类模块有点像没有实例的类。因此,模块中定义的实例方法本身是无用的;您需要将该模块包含在类中才能使用它们
这很重要,因为attr\u accessor:var
本质上定义了两个实例方法:
def var
@var
end
def var= v
@var = v
end
如果您想调用刚刚创建的实例方法,您需要将self
作为Moddy
的实例,但是在这个上下文中self
只是Moddy
,所以您实际上只是创建了一个名为var
的局部变量
如果希望Moddy
拥有var
,则需要从singleton类调用attr\u accessor
(因为Moddy
是其singleton类的一个实例)
Moddy模块
班