Ruby 如何从类的模块中访问变量
我会很感激这里有人的帮助 我有以下情况:Ruby 如何从类的模块中访问变量,ruby,Ruby,我会很感激这里有人的帮助 我有以下情况: module Tester def testing x = "This works" end end class Dog include Tester puts x end 当我试图从类Dog(put x)中访问变量时,我得到一个错误未定义变量x。有人能告诉我如何访问它吗?Ruby支持模块中的类变量,因此您可以为模块定义任何类变量,如下所示: Module Tester @@x = 'default' def
module Tester
def testing
x = "This works"
end
end
class Dog
include Tester
puts x
end
当我试图从类Dog(
put x
)中访问变量时,我得到一个错误未定义变量x
。有人能告诉我如何访问它吗?Ruby支持模块中的类变量,因此您可以为模块定义任何类变量,如下所示:
Module Tester
@@x = 'default'
def testing
@@x = "This works"
end
def get_x
@@x
end
end
class Dog
include Tester
puts @@x # get_x
end
#=> default
如果要显示“This works”文本,需要首先调用testing
方法:
Tester.testing
puts Tester.get_x #=> "This works"
在此上下文中,
x
是一个局部变量,作用域位于测试
方法内。在该范围之外将无法访问。也就是说,即使它是一个实例变量,您也无法以这种方式在Dog
类中执行puts。你可能会从一些阅读中受益,而不是像我说的那样,有人为你解决问题,我希望得到帮助,而不是关于阅读内容的讲座。如果有其他方法访问此变量,如果有经验的Rubyist能够提供帮助,我将不胜感激。@user4219550您可以使用puts Dog.new.testing
访问它,但您的评论非常令人不快。你应该真正按照书/文章去理解你在做什么,而不是问这么简单的问题。不要让人不快。只是说实话从诚实的角度来看,“……如果你教一个女人钓鱼……”。现在你只是想要鱼。