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

标签 ruby class namespaces

当您想使用模块时 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/

相关文章:

c# - C#中的命名空间错误

swift - 在 Swift 中初始化一个类

python - 从数据库中收集数据,函数与类

ruby-on-rails - 仅显示 Rails 中字符串的前 x 个单词

Ruby - 散列属性的 Setter 方法

JavaScript 类设置自身

.net - 如何在不同的应用程序但同一个项目中访问自己的命名空间?

C# 命名空间不能直接包含 void 的字段或方法等成员

ruby-on-rails - Michael Hartl 教程第 6 章 - 语法错误

ruby-on-rails - 32651 :ERROR comparison of Float with Float failed ruby