只有大写时,才能从另一个文件中的模块访问变量

时间:2017-11-06 09:45:07

标签: ruby

module.rb中的

module MyModule
  var = "ruby is magic"
end

magic.rb

require "./module.rb"
puts MyModule::var

错误:

`<main>': undefined method 'var' for MyModule:Module (NoMethodError)

1 个答案:

答案 0 :(得分:2)

在ruby中,名称以大写字母开头的“变量”实际上是常量

所以,当你编写这样的代码时:

module MyModule
  MyConstant = "ruby is magic"
end

您实际上已经定义了常量,可以在代码中的任何其他位置访问(假设已加载此文件):

MyModule::MyConstant # => "ruby is magic"

另一方面,如果您定义本地变量(即以小写字母开头):

module MyModule
  my_local_variable = "ruby is magic"
end

然后无法从定义它的范围之外访问它,因为......好吧,它是本地变量!