Scala 調用方法時加不加小括號


1.無參方法,加不加都可以執行。因為都可以執行,所以遇到不想它執行時,比如函數作為參數傳遞時,可以加上下划線 _

object FuncProgrammingDemo {

  def main(args: Array[String]): Unit = {
    myPrint //hello

    myPrint() //hello
  }

  def myPrint(): Unit ={
    println("hello")
  }

}

 

2.隱式匹配時,加了會報錯,不加能成功執行

object FuncProgrammingDemo {

  implicit val v = "scala"

  def main(args: Array[String]): Unit = {
    myPrint //scala
  }

  def myPrint(implicit str:String): Unit ={
    println(str)
  }

}

 

3.函數賦值給變量后,加了才執行,不加不執行。

object FuncProgrammingDemo {

  def main(args: Array[String]): Unit = {
    val f = myPrint _
    //f沒有執行
    f 
    f() //hello
  }

  def myPrint(): Unit ={
    println("hello")
  }

}

4.在控制抽象函數里。在test方法中,空參函數f的小括號去掉后,在test里調用不能加小括號,加了會報錯。

object ScalaDemo {

  def main(args: Array[String]): Unit = {

    //傳遞參數函數f時,直接傳遞代碼塊
    test{
      println("hello")
      println("scala")
    }
  }

  //去掉入參的小括號
  def test(f: => Unit) = {
    //調用時也去掉小括號
    f
  }

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM