我在以下文件夹中有一个方法:
/lib/app_name/my_file.rb /lib/app_name/other_file.rb
在我的代码中,目前看起来像这样:
APP_NAME::OTHER_FILE.some_method?(APP_NAME::MY_FILE::A::B)
有没有一种方法可以在我的代码中包含这一次,所以我不必像这样引用它?
特别是我想访问方法'some_method'和类MY_FILE中的枚举。
答案 0 :(得分:0)
在ruby中,一切都是一个对象,甚至是类。
因此,您可以将类(或模块)分配给变量,以便创建本地速记,如下所示:
other = APP_NAME::OTHER_FILE
mine = APP_NAME::MY_FILE::A::B
other.some_method? mine
答案 1 :(得分:0)
您已经不需要传递当前命名空间的任何类/模块的名称,例如,您可以将APP_NAME::
部分放在这些类名中。
如果你想进一步减小类名的大小,你需要逐字地更改你的类名(假设你命名不好)或者像Pablo所说的那样做,并将它们别名为短名称。是的,您可以“要求”他们将别名放在一行中:
创建一个文件,例如,在gems中完成的方式:lib / app_name.rb(对于Gem,lib / gem_name.rb)。在里面:
require 'app_name/my_file'
require 'app_name/other_file'
在other_file.rb和my_file.rb中,创建别名:
class AppName::MyFile
...
end
AppName::MF = AppName::MyFile
现在你可以只require 'app_name'
加载所有类及其别名。
然后,您可以引用AppName::MF
而不是AppName::MyFile
。
PS:顺便说一下,你正在使用一些奇怪的命名约定;)作为类名的APP_NAME :: MY_FILE是奇数。类名应该是驼峰式的。