从模块返回类似proc的方法非常容易:
module Foo
def self.bar
# Method implementation
end
def self.baz
# Method implementation
end
def self.qux
# Method implemenatation
end
def self.zoo
# Method implementation
end
end
Foo.method(:bar) # Returns a proc object
Run Code Online (Sandbox Code Playgroud)
但是如果我想从同一个模块返回多个(但不是全部)方法呢?一种方法是:[:bar,:baz].inject([]) {|memo,i| memo << Foo.method(i)}
是否有更好,更灵活的方式来做同样的事情?
您始终可以使用猴子修补来使其看起来像您想要的那样:
class Object
def get_methods(*methods)
methods.map { |m| method(m) }
end
end
module Foo
def self.bar
# Method implementation
end
def self.baz
# Method implementation
end
end
Foo.get_methods(:foo, :baz)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |