黑猴子的家:Scala 隐式类

在scala2.10后提供了隐式类,可以使用implicit声明类,但是需要注意以下几点:
(1)其所带的构造参数有且只能有一个
(2)隐式类必须被定义在“类”或“伴生对象”或“包对象”里,不能置顶
不关在哪里定义,其实都是在对象里面定义,也就是说,必须在已经实例化的作用域内,定义隐式类
(3)隐式类不能是case class(case class的定义,会自动生成伴生对象,与2矛盾)
(4)作用域内不能有与之相同名称的标示符

object StringUtils {
  //隐士类
  implicit class StringImprovement(val s:String){
    def increment = s.map(x => (x + 1) toChar)
  }
}

object StringMain{
  def main(args: Array[String]): Unit = {
    import unit15.StringUtils._
    println("abcde".increment)
  }
}

转载于:https://www.jianshu.com/p/f8104f838433

猜你喜欢

转载自blog.csdn.net/weixin_34211761/article/details/91182539