2

私はJavaから来ましたが、インターフェイスがrubyに存在するかどうか疑問に思っていますか?Javaインターフェースが提供する契約上の振る舞いをどのように模倣できますか?

例えば:

interface ContactService {
    public boolean successful(Contract contract);
}
4

1 に答える 1

2

Rubyにはインターフェースの本当の概念はありません。代わりに、操作対象のオブジェクトのタイプを気にせず、オブジェクトが実装する必要のある特定のメソッドのセットを使用するだけの一般的なメソッドを作成する傾向があります。

例えば:

def add(a,b)
  a+b
end

このaddメソッドは、引数が整数、文字列、配列のいずれであるかを気にしません。それらは、+演算子を実装するオブジェクトである必要があります。

def calltwice(obj)
  obj.call
  obj.call
end

メソッドは、がラムダ、proc、またはカスタムクラスであるかcalltwiceどうかを気にしません。オブジェクトにメソッドobjがあることだけを気にします。call

コードのユーザーに、どのメソッドがどのように動作するかを伝えることで、コメントでインターフェイスを非公式に定義できます。

于 2012-04-27T05:07:45.243 に答える