帮助解析类和方法以减少代码

时间:2011-08-01 22:43:24

标签: ruby-on-rails ruby

我在以下文件夹中有一个方法:

/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中的枚举。

2 个答案:

答案 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是奇数。类名应该是驼峰式的。