ITPub博客

首页 > 应用开发 > > scala隐式转换优先级问题

scala隐式转换优先级问题

作者:u_151d1ef45539 时间:2019-08-22 15:53:15 0 删除 编辑

隐式转换编译器会优先选择方法的参数作为转换对象,验证如下:

object rct {


  implicit def intToBook(num:Int) = new Book(num)
  implicit def bookToInt(book:Book) = book.number

  class Book(val number:Int){

    def + ( that : Book ) = new Book( this.number + that.number )

  }

  
  def main(args: Array[String]): Unit = {


     val book1 = new Book(100)
     val book2 = new Book(200)

     val book3 = book1 + book2
     println(book3.isInstanceOf[Book])

     val book4 = book1 + 200
     println(book4.isInstanceOf[Book])

     val book5 = 200 + book1 
     println(book5.isInstanceOf[Int])

print:

true
true
true


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69927053/viewspace-3133348/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-31

  • 博文量
    155
  • 访问量
    256