我会说一个接口有点像一个类型类
SomeInterface t,其中所有值都具有类型
t ->whatever(其中
whatever不包含
t)。这是因为有了Java和类似语言中的继承关系,所调用的方法取决于调用它们的对象的类型,而没有别的。
这意味着很难
add :: t -> t ->t通过接口实现类似的功能,因为在一个以上的参数上它是多态的,因为接口无法指定该方法的参数类型和返回类型与的类型相同。被调用的对象(即“自我”类型)。使用Generics,有一种方法可以通过用通用参数(该参数应该与对象本身具有相同的类型)制作一个接口来伪造此伪装,例如
Comparable<T>,它应如何使用,
Fooimplements Comparable<Foo>以便您
compareTo(T otherobject)具有类型
t -> t ->Ordering。但这仍然需要程序员遵循此规则,并且当人们想要创建使用此接口的函数时,还必须引起麻烦,因为他们必须具有递归的泛型类型参数。
同样,您不会有类似的事情,
empty :: t因为您不在这里调用函数,因此它不是方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)