我正在使用Ruby 1.9.2
我有一个名为search的类方法,它采用一个块
e.g。
class MyClass
def self.search do
if criteria1
keywords "abcde", fields: :c1 do
minimum_match(1)
end
end
if criteria2
keywords "defghi", fields: :c2 do
minimum_match(1)
end
end
end
end
我想要做的是重构MyClass.search方法,并为每个if / end语句提供一个简单的单行方法
e.g。它看起来像这样:
class MyClass
def self.search do
c1_method
c2_method
end
def self.c1_method
if criteria1
return keywords "abcde", fields: :c1 do
minimum_match(1)
end
end
end
def self.c2_method
if criteria2
return keywords "defghi", fields: :c2 do
minimum_match(1)
end
end
end
end
但是我上面展示的重构并不是很有效。看起来我在c1_method和c2_method中返回的“块”实际上并没有在搜索方法中返回和评估,但我不知道该怎么做。
答案 0 :(得分:0)
好吧,你可以使用method(sym)
调用来获取方法的主体。
>> def foo(bar); bar * 2; end
=> nil
>> def baz(bleep); method(:foo).call(bleep); end
=> nil
>> baz(6)
=> 12