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
访问它,但您的评论非常令人不快。你应该真正按照书/文章去理解你在做什么,而不是问这么简单的问题。不要让人不快。只是说实话从诚实的角度来看,“……如果你教一个女人钓鱼……”。现在你只是想要鱼。