使用类作为整个文件的命名空间

时间:2012-12-05 23:14:07

标签: ruby class namespaces

当您想使用模块A作为命名空间来处理整个文件时,您可以放置​​:

include A

以及随后的内容将在A之内。有没有办法与班级B做类似的事情?

把:

class B

在文件的开头,并在文件的所有内容之后,用

结束文件
end

看起来不优雅,是错误的原因。我正在寻找一种不需要像end这样的结束命令的方式。

修改我上面关于include A的说明似乎有误。即使这样做,环境仍然是主要对象。我想要的是让它成为可能,如果我只是做

def foo; ... end

没有任何明确的嵌套,那么它将被定义为AB针对相应案例的方法。

1 个答案:

答案 0 :(得分:0)

据我所知,没有这样的指示。

虽然如果你的文件将由另一个脚本“执行”,你可以做的是:

档案file.rb包含

puts self

档案main.rb包含

class B
    eval(File.read('file.rb'))
end

如果你想让它更透明,你甚至可以提供自己的需求实现,它隐藏了所有这些魔力。