2013-08-06 60 views
0

我的應用程序允許用戶選擇他自己的數據適配器類。他可以將它作爲他的習俗課程的一個對象。然後檢查該對象是否具有作爲有效數據適配器工作所需的特定方法。它看起來像這樣:通過它的方法驗證對象

def valid_object?(object) 
    object.respond_to?(:method_1) && 
    object.respond_to?(:method_2) && 
    object.respond_to?(:method_3) && 
    object.respond_to?(:method_4) && 
    object.respond_to?(:method_5) && 
    object.respond_to?(:method_6) && 
    object.respond_to?(:method_7) 
end 

它看起來不太好。有沒有更好的寫法?沒有太多的重複?

我聽說其他語言有一些稱爲接口的東西讓他們檢查對象是否有特定的方法。所以也許有更好的方法來檢查對象是否在Ruby中有效?

回答

2

你可以使用Enumerable#all?方法,這樣做:

[:method1, :method2, ..., :method7].all? { |m| object.respond_to?(m) } 
+0

所以簡單(快速),但我沒有想到這樣的解決方案。非常感謝你 :) – zethix