当您想使用模块时 A
作为在整个文件中工作的命名空间,您可以只放置:
include A
后面的内容都在
A
之内.有没有办法对类 B
做类似的事情? ?推杆:
class B
在文件的开头,在文件的所有内容之后,以
end
看起来不优雅,是一个错误的原因。我正在寻找一种不需要像
end
这样的关闭命令的方法.编辑 我上面关于
include A
的描述似乎错了。即使这样做之后,环境仍然是主要对象。我想要的是让它成为可能,如果我只是这样做def foo; ... end
没有任何显式嵌套,那么这将被定义为
A
的方法或 B
针对各自的情况。
最佳答案
据我所知,没有这样的指令。
虽然如果您的文件要由另一个脚本“执行”,您可以做的是:
文件 file.rb
包含
puts self
文件
main.rb
包含class B
eval(File.read('file.rb'))
end
如果你想让这更透明,你甚至可以提供你自己的 require 实现,它隐藏了所有这些魔法。
关于ruby - 使用类作为整个文件的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734242/