小编per*_*vic的帖子

Scala从父特征隐式转换

以下代码无法编译:

import scala.language.implicitConversions

trait Base {
  class Wrp[+T](val v: T) // wrapper / internal representation
}

trait BooleanOps extends Base {
  // implicit conversion
  implicit def lift2BooleanOpsCls(x: Boolean): BooleanOpsCls =
    new BooleanOpsCls(new Wrp[Boolean](x))
  class BooleanOpsCls(wx: Wrp[Boolean]) {
    def ||(wy: =>Wrp[Boolean]): Wrp[Boolean] = new Wrp[Boolean](wx.v || wy.v)
  }
}

trait MyExample extends BooleanOps {
  // test method
  def foo(): Wrp[Boolean] = {
    val ret: Wrp[Boolean] = false || new Wrp[Boolean](true)
    ret
  }
}
Run Code Online (Sandbox Code Playgroud)

输出:

MyExample.scala:18: error: type mismatch;
 found   : MyExample.this.Wrp[Boolean] …
Run Code Online (Sandbox Code Playgroud)

scala implicit traits implicit-conversion

13
推荐指数
2
解决办法
326
查看次数

标签 统计

implicit ×1

implicit-conversion ×1

scala ×1

traits ×1