在类上传递变量

时间:2016-07-21 05:44:54

标签: ruby ruby-on-rails-4

我有一个范围问题,我相信并会感激任何建议,谢谢

$variable_1 = 0

module Yogi
   class ErrorInside
     def yogify
      $variable_1 = new_value
     end
   end



  class CheckErrors
   def checker
    $variable_1 += 1
   end
  end
end

我希望$ variable_1维护在ErrorInside类中收到的新值,并在类CheckErrors的函数中使用它,但它会将它们设置为0。

关于如何实现该变量1的任何建议都会保持ErrorInside类的新值?

此外,每个类都在单独的可执行文件中调用,因此在运行类CheckErrors之前再次运行类ErrorInside是不可能的。

这个想法是让$ variable1 globaly的新值可用于后期执行的所有类

1 个答案:

答案 0 :(得分:1)

您需要弄清楚如何命名类,模块和定义。类和模块使用常量,因为它们的名称和方法使用snake casing。然后使用正确的表示法,在创建Class1Class2的新实例后调用您的方法。

$variable1 = 0

module Module1
  class Class1
    def method_1
      $variable1 = 10
    end
  end

  class Class2
    def method_1
      $variable1 +=  1
    end
  end
end

Module1::Class1.new.method_1
$variable1 #=> 10

Module1::Class2.new.method_1
$variable1 #=> 11