Ruby从Module导入局部变量

时间:2014-02-08 14:39:16

标签: ruby module scope

module Mod
  var = 2 
end

class Person
  include Mod
  puts var
end

简单的问题。为什么我不能访问从模块导入的局部变量?

2 个答案:

答案 0 :(得分:5)

因为它是一个局部变量。这就是他们的目的。局部变量是它们定义的词法范围的局部变量。这就是它们被称为局部变量的原因。

答案 1 :(得分:3)

当您在另一个模块或类中包含模块时,此模块的Ruby’s default implementation is to add the constants, methods, and module variables为mod(包含模块的地方)尚未添加到mod或其中一个祖先

在您的情况下,var是模块Mod的局部变量,因此无法通过行Person将其包含在类include Mod中。