我有多个类似的方法
[code="ruby"]def fun1
if ARRAY_PRE.include? array[0]
return true if ARRAY_PRE.include? array[1]
return (! ARRAY_PRE.include? array[2])
else
return false unless ARRAY_PRE.include? array[1]
return (ARRAY_PRE.include? array[2])
end
end
def fun2
if array[0] MIDDLE
return true if array[1] > MIDDLE
return (! array[2] > MIDDLE)
else
return false unless array[1] > MIDDLE
return (array[2] > MIDDLE)
end
end
...[/code]
仅仅判断标准不同,依据DRY原则,应该有类型下面这样的方法。
[code="ruby"]def det
if yield array[0]
return true if yield array[1]
return (! yield array[2])
else
return false unless yield array[1]
return (yield array[2])
end
end[/code]
思路是这样,但这个方法没法调用。
请大家帮忙想想究竟应该如何抽象这个框架方法。
[b]问题补充:[/b]
谢谢大家的踊跃答复。
原来是我疏忽了,看到yeild后的参数不一致,就想当然的以为不能直接调用。却原来可以直接用一个参数代替传入。
实例代码中的array应该是@array或$array。不过思路是一样的。