Stange在Scala中使用隐式返回类型
问题描述:
我无法理解。为什么每个函数使用类型约束都有不同的返回类型。Stange在Scala中使用隐式返回类型
起初我并让功能inv
像下面,和它的返回类型为int
implicit val x = 10
def inv[A](a: A)(implicit ev: Int) = ev
inv(1) // it return 10
// res0: Int = 10
然后我做了让功能inv2
中包含类型的限制,而且它的返回类型为功能1
def inv2[A](a: A)(implicit ev: Int <:< Int) = ev
inv2(1)
// res2: <:<[Int,Int] = <function1>
答
inv2
的返回类型被推断为<:<[Int,Int]
- 与预期的一样。
但是,返回值的运行时类型为Int => Int
。那是因为<:<
是的一个函数。
sealed abstract class <:<[-From, +To] extends (From => To) with Serializable
而调用<function1>
上的函数结果toString
被打印。