Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scalaz.Equal是如何解决的_Scala_Implicit_Scalaz - Fatal编程技术网

scalaz.Equal是如何解决的

scalaz.Equal是如何解决的,scala,implicit,scalaz,Scala,Implicit,Scalaz,scalaz包中有Equal对象: package scalaz object Equal extends EqualLow { // ... implicit def Tuple3Equal[A: Equal, B: Equal, C: Equal]: Equal[(A, B, C)] = equal { case ((a1, b1, c1), (a2, b2, c2)) => a1 ≟ a2 && b1 ≟ b2 && c1 ≟ c

scalaz
包中有
Equal
对象:

package scalaz

object Equal extends EqualLow {

  // ...

  implicit def Tuple3Equal[A: Equal, B: Equal, C: Equal]: Equal[(A, B, C)] = equal {
    case ((a1, b1, c1), (a2, b2, c2)) => a1 ≟ a2 && b1 ≟ b2 && c1 ≟ c2
  }

  //...
}
编译器如何知道在调用时将调用
隐式def Tuple3Equal
方法:

import scalaz._
import Scalaz._

implicitly[Equal[Tuple3[Int,Int,Int]]]
//or
(1,2,3).=== (1,2,3)

请注意,我只导入
scalaz.\uuz
包和
scalaz.\uz
对象,并且没有包含隐式的显式导入scalaz.Equal.\uu。

,因为在查找
Foo
类型的隐式时,
Foo
的伴随对象总是被选中。有关隐式解析的完整描述,请参阅。

因为在查找类型为
Foo
的隐式时,
Foo
的伴生对象总是被选中。有关隐式解析的完整描述,请参见