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で有効かどうかを確認するより良い方法があるでしょうか?

4

1 に答える 1

2

Enumerable#all?次のように、メソッドを使用してそれを行うことができます。

[:method1, :method2, ..., :method7].all? { |m| object.respond_to?(m) }
于 2013-08-06T12:27:43.613 に答える