Ruby 从模块导入局部变量


module Mod
  var = 2 
end
class Person
  include Mod
  puts var
end

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

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

当你将一个模块包含在另一个模块或类中时,Ruby 的默认实现是将此模块的常量方法和模块变量添加到 mod(如果该模块尚未添加到 mod 或其祖先之一)中。

在你的例子中,var是模块Mod的局部变量,所以它不能包含在类Person中,通过行include Mod

最新更新