2014-09-27 73 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

相关问题