Scala的隐式参数、隐式值、隐式对象

来源:互联网 发布:程序员 工资 编辑:程序博客网 时间:2024/05/22 09:09
object ScalaDemo extends App{  trait Calc[T] {    def multiply(x:T):T  }  /*  // 使用隐式值转换到隐式参数  class MultiplyWithInt extends Calc[Int] {    def multiply(x: Int): Int = x * x  }  class MultiplyWithString extends Calc[String] {    def multiply(x: String): String = x * 2  }  // 定义隐式值  implicit val i = new MultiplyWithInt()  implicit val s = new MultiplyWithString()  */  // 使用隐式对象转换到隐式参数  // 定义隐式对象  implicit object ObjMultiplyWithInt extends Calc[Int]{    def multiply(x: Int): Int = x * x  }  implicit object ObjMultiplyWithString extends Calc[String]{    def multiply(x: String): String = x * 2  }  //函数柯里化,最后一个参数是隐式参数  def multiply[T:Calc](x:T)(implicit method:Calc[T]) = {    method.multiply(x)  }  println(multiply(2))  println(multiply("string"))}



原创粉丝点击