加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala 2.10.2可能存在错误

发布时间:2020-12-16 18:30:21 所属栏目:安全 来源:网络整理
导读:我用 Scala隐式解决方法得到了意想不到的行为,我想知道这个bug是在我的理解中还是在Scala编译器中. 这是代码: trait Trait1[A]implicit def trait1ToList[A](trait1: Trait1[A]): List[A] = ???trait Trait2[C]{ implicit def trait2Implicit[A,C % List[A]
我用 Scala隐式解决方法得到了意想不到的行为,我想知道这个bug是在我的理解中还是在Scala编译器中.
这是代码:

trait Trait1[A]

implicit def trait1ToList[A](trait1: Trait1[A]): List[A] = ???

trait Trait2[C]

{
  implicit def trait2Implicit[A,C <% List[A]]: Trait2[C] = ???

  // Compiles,as expected.
  implicitly[Trait2[Trait1[Int]]]
}

{
  implicit def trait2Pimp[A,C <% List[A]](int: Int): Trait2[C] = ???

  // Compiles,as expected.
  implicitly[Int => Trait2[Trait1[Int]]]

  // Does not compile,which is unexpected.
  // This is weird,because the fact the previous line compiles
  // implies the implicit conversion is in scope.
  2: Trait2[Trait1[Int]]
}

编译错误是:

[error] /Users/eric/Dropbox/t/2013_q1/billy/src/test/scala/billy/experiments/wideBaseline/testWideBaselineExperiment.scala:56: No implicit view available from Trait1[Int] => List[A].
[error]       2: Trait2[Trait1[Int]]
[error]       ^

解决方法

是的,这是scala编译器中的一个 bug,此后已在2.11中修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读