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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章