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

calltwice方法不关心obj是 lambda、proc 还是某个自定义类。它只关心对象是否有call方法。

你可以在注释中非正式地定义一个接口,告诉你的代码的用户哪些方法将被调用以及它们应该如何表现。

于 2012-04-27T05:07:45.243 回答