【问题标题】:Stange return type using implicit in Scala在 Scala 中使用隐式的 Stange 返回类型
【发布时间】:2015-11-05 15:35:46
【问题描述】:

我无法理解。为什么每个函数使用类型约束有不同的返回类型。

首先我做了如下函数inv,它的返回类型是Int

implicit val x = 10
def inv[A](a: A)(implicit ev: Int) = ev
inv(1) // it return 10

// res0: Int = 10

然后我确实使用如下类型约束创建函数inv2,它的返回类型是Function1

def inv2[A](a: A)(implicit ev: Int <:< Int) = ev
inv2(1)

// res2: <:<[Int,Int] = <function1>

【问题讨论】:

    标签: scala


    【解决方案1】:

    inv2 的返回类型被推断为 &lt;:&lt;[Int,Int] - 正如预期的那样。

    但是,返回值的运行时类型是Int =&gt; Int。那是因为&lt;:&lt; 一个函数。

    sealed abstract class <:<[-From, +To] extends (From => To) with Serializable
    

    在函数上调用toString 会导致打印&lt;function1&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      相关资源
      最近更新 更多