我有以下文件夾的方法:幫助解決類和方法,以減少代碼
/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中的枚舉。
我有以下文件夾的方法:幫助解決類和方法,以減少代碼
/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中的枚舉。
在ruby中,一切都是對象,即使是類。
所以,你可以指定類(或模塊)的變量,以創建一個本地的簡寫,是這樣的:
other = APP_NAME::OTHER_FILE
mine = APP_NAME::MY_FILE::A::B
other.some_method? mine
你已經不應該需要通過在任何類/模塊的名稱您目前命名空間,所以例如,您可以刪除這些類名稱中的APP_NAME::
部分。
如果您想要進一步縮小類名的大小,您需要從字面上更改類名(假設您命名爲不好),或者按照Pablo的說法進行操作,並將它們別名爲較短的名稱。是的,你可以'要求'他們在一行中得到別名:
創建一個文件,例如,它在gems中完成的方式:lib/app_name.rb(如果是Gem,lib /gem_name.rb)。裏面是:所以現在
class AppName::MyFile
...
end
AppName::MF = AppName::MyFile
你可以require 'app_name'
和所有的類將被加載,與他們一起別名:
require 'app_name/my_file'
require 'app_name/other_file'
而且裏面other_file.rb和my_file.rb,創建別名。
然後你可以參考AppName::MF
而不是AppName::MyFile
。注意:順便說一下,您使用的是一些奇怪的命名約定;)APP_NAME :: MY_FILE作爲類名是奇數。類名應該是駱駝式的。
你需要的文件是正確的?你想要什麼就像'速記'爲了不每次都做'APP_NAME :: BLA'? –
不,我不需要它們,因爲我使用rails約定引用它們,所以它會禁止文件所在的文件夾。 – Blankman
好的,答案也適用於你? –