2014-09-27 56 views

回答

1

如果您可以負擔得起Foo是模塊而不是類,請使用module_function

module Foo 
    module_function 

    def bar 

那麼這將工作:

Foo.bar 
2

轉換您ClassModule,並使用extend self應該做你想要什麼。對於模塊中的每個方法,它都會創建一個類方法。

所以,你的例子可以寫成:

module Foo 
    extend self 

    def bar 

另一種方法是使用Module#refine,它可以把一個類到一個模塊。所以你可以創建你的類的一個模塊,然後用你創建的模塊擴展你的類。

+0

根據Ruby風格指南(不是權威性指南,只是社區創建的建議指南),您應該將'module_function'放在'extend self'上:https://github.com/bbatsov/ruby-style-guide #模塊功能 – 2014-09-28 02:01:39

相關問題