scala val隐式变量


package com.lhj.scala

object Test {
  def main(args: Array[String]): Unit = {
    getStudentInfo("Spark")(8)
    getStudentInfo("Spark")          --相当于age有一个默认值
  }
 
  implicit val age = 6
  def getStudentInfo(name: String)(implicit age: Int){
    println(name+" "+age)
  }

}


--结果:
Spark 8
Spark 6


--------------------------------------------------------------------

package com.lhj.scala

import java.io.File
import scala.io.Source

object Test {
  def main(args: Array[String]): Unit = {
    Person.print1("Spark")(10)
   
    import PersonDefault._
    Person.print1("Spark")
    Person.print2("Spark")
  }
}

object Person{
 
  def print1(name:String)(implicit age1:Int) {
    println(name+" : "+age1)
  }
 
  def print2(name:String)(implicit age2:Int) {
    println(name+" : "+age2)
  }
}

object PersonDefault{
  implicit val default:Int = 6
  implicit val age1 = 16
  implicit val age2 = 16
}


--结果:
Spark : 10
Spark : 6 
Spark : 6

定义了age1,又定义了default:Int,结果运行的时候取的是default值


------------------------------------------
scala> class Salary(val sal: Int)
defined class Salary

scala> def getWorker(name: String)(salary: Salary) = println(name+" "+salary.sal)
getWorker: (name: String)(salary: Salary)Unit

scala> getWorker("Spark")(new Salary(3000))
Spark 3000

scala> getWorker("Spark")_
res17: Salary => Unit = <function1>

scala> getWorker("Spark")                 --报错
<console>:20: error: missing arguments for method getWorker;
follow this method with `_' if you want to treat it as a partially applied function
              getWorker("Spark")
                      ^

scala> implicit val sal = new Salary(3000)
sal: Salary = Salary@2e78101a

scala> def getWorker(name: String)(implicit salary: Salary) = println(name+" "+salary.sal)
getWorker: (name: String)(implicit salary: Salary)Unit

scala>  getWorker("Spark")     --不用输入salary,不会报错
Spark 3000






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值