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
scala val隐式变量
最新推荐文章于 2023-02-20 15:57:59 发布