Scala 无法理解=:=[A,B]代表什么

Scala 无法理解=:=[A,B]代表什么,scala,types,Scala,Types,可能重复: 什么是=:=[A,B]类是A和B属于同一类的证据。有关解释,请参见 很难找到一些例子。下面是一个小代码: 从Scala 2.8开始,参数化类型通过通用类型约束类提供了更多的约束功能。这些类支持方法的进一步专业化,并补充上下文边界,如下所示: A=:=B断言A和B必须相等 A最好的办法是查看Predef的来源。您可以在这里找到: object =:= { implicit def tpEquals[A]: A =:= A = new (A =:= A) {def apply(

可能重复:

什么是
=:=[A,B]
类是
A
B
属于同一类的证据。有关解释,请参见

很难找到一些例子。下面是一个小代码:


从Scala 2.8开始,参数化类型通过通用类型约束类提供了更多的约束功能。这些类支持方法的进一步专业化,并补充上下文边界,如下所示:

A=:=B断言A和B必须相等


A最好的办法是查看Predef的来源。您可以在这里找到:

object =:= {
  implicit def tpEquals[A]: A =:= A = new (A =:= A) {def apply(x: A) = x}
}

因此,A=:=B类型的对象只有在A和B是同一类型时才隐式可用。

请举例说明如何使用它。
@ninjagecko:
A:A
断言术语
A
具有
A
类型。。。这类似于“是元素”关系(a∈ A) 在集合论中<但是这是一个使用类
=:=[A,A]
的对象。它没有解释
A=:=A
的含义,而是告诉您编译器如何隐式获取A=:=B的实例,这是该类的唯一用途。该类仅作为a等于B这一事实的见证。很抱歉重复,但同样,无法搜索字符串“=:=”。。。
object =:= {
  implicit def tpEquals[A]: A =:= A = new (A =:= A) {def apply(x: A) = x}
}