浅谈scala:隐式参数,隐式函数和隐式类

先写一个空的scala对象,以及其伴生类:

class FunctionDemo

object FunctionDemo {

}

下面我们将开始了解什么是scala中的隐式参数,隐式函数和隐式类

隐式参数

class FunctionDemo

object FunctionDemo {
  //隐式参数
  implicit var d=4
  
  def fun(a:Int)(b:Int)(c:Int)(implicit d:Int):Int={
        a+b+c+d
    }
    println(fun(1)(2)(3))//结果为:10
}

这里可以看到:在调用fun函数时,只输入了前三个参数,最后一个参数d是自动调用前面定义的
implicit var d=4
这就是隐式参数。

隐式函数和隐式类

重新定义一个新的对象:

object ImplicitCase {
  //隐式参数
  implicit var d=4

  //隐式方法
  implicit def doubleToInt(a:Double)=a.toInt
  implicit def doubleToString(a:Double)=a.toString

  //隐式类
  implicit class getJi(obj:FunctionDemo){
    //隐式函数
    def ji(n1:Int,n2:Int):Int={
      n1*n2
    }
  }
}

以上是定义在ImplicitCase类中的一些隐式方法和一个隐式类,把前面的一个隐式参数也放到这个类里,然后使用import导入

import ImplicitCase._

class FunctionDemo

object FunctionDemo {
  def main(args: Array[String]): Unit = {
    import kb07.ImplicitCase._
    def fun(a:Int)(b:Int)(c:Int)(implicit d:Int):Int={
        a+b+c+d
    }

    println(fun(1)(2)(3))  //结果为:10

    val a:Int=3.444   //调用ImplicitCase中的隐式方法使Double转为Int
    println(a)  //结果为:3

    val b:String=4.5555   //调用ImplicitCase中的隐式方法使Double转为String
    println(b)  //结果为:4.5555

    val fd=new FunctionDemo   //创建FunctionDemo类
    val num=fd.ji(4,5)    //调用ImplicitCase中的隐式类的ji方法
    println(num)   //结果为:20
  }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值