package com.coryklein.lct.model
import org.scalatest.FlatSpec
import language.implicitConversions
class VertexTest extends FlatSpec {
case class Vertex(x: Double, y: Double)
implicit def tupleWrapper(tuple: (Double, Double)): Vertex =
new Vertex(tuple._1, tuple._2)
"A Vertex" should "be implicitly created from a tuple" in {
val v: Vertex = (0, 0)
}
}
在此代码中,(0,0)
并未像我预期的那样隐式转换为Vertex
。为什么呢?
答案 0 :(得分:3)
查看编译器错误:
Error:(17, 21) type mismatch; found : (Int, Int) required: VertexTest.this.Vertex
val v: Vertex = (0, 0)
^
(0,0)
的类型为(Int,Int)
,与您创建的隐式(Double,Double)
的定义不匹配,因此无法应用隐式。
要解决您的问题,请更改匹配的类型或定义新的隐式转换。