module Mod
var = 2
end
class Person
include Mod
puts var
end
简单的问题。为什么我无法访问从模块导入的局部变量?
因为它是一个局部变量。这就是他们在那里的目的。局部变量是定义它们的词法范围的局部变量。这就是为什么它们被称为局部变量。
当你将一个模块包含在另一个模块或类中时,Ruby 的默认实现是将此模块的常量、方法和模块变量添加到 mod(如果该模块尚未添加到 mod 或其祖先之一)中。
在你的例子中,var
是模块Mod
的局部变量,所以它不能包含在类Person
中,通过行include Mod
。