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隱式變量
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.