私はJavaから来ましたが、インターフェイスがrubyに存在するかどうか疑問に思っていますか?Javaインターフェースが提供する契約上の振る舞いをどのように模倣できますか?
例えば:
interface ContactService {
public boolean successful(Contract contract);
}
私はJavaから来ましたが、インターフェイスがrubyに存在するかどうか疑問に思っていますか?Javaインターフェースが提供する契約上の振る舞いをどのように模倣できますか?
例えば:
interface ContactService {
public boolean successful(Contract contract);
}
Rubyにはインターフェースの本当の概念はありません。代わりに、操作対象のオブジェクトのタイプを気にせず、オブジェクトが実装する必要のある特定のメソッドのセットを使用するだけの一般的なメソッドを作成する傾向があります。
例えば:
def add(a,b)
a+b
end
このadd
メソッドは、引数が整数、文字列、配列のいずれであるかを気にしません。それらは、+
演算子を実装するオブジェクトである必要があります。
def calltwice(obj)
obj.call
obj.call
end
メソッドは、がラムダ、proc、またはカスタムクラスであるかcalltwice
どうかを気にしません。オブジェクトにメソッドobj
があることだけを気にします。call
コードのユーザーに、どのメソッドがどのように動作するかを伝えることで、コメントでインターフェイスを非公式に定義できます。