Scala按名稱調用函數

通常,函數的參數是按值參數; 也就是說,參數的值在傳遞給函數之前確定。 但是,如果我們需要編寫一個函數來接受一個運算式作為參數,我們不希望在函數調用之前進行評估怎麼辦? 在這種情況下,可使用Scala中提供的名稱參數。

一個按名稱機制將代碼塊傳遞給調用,並且每次調用訪問該參數時,代碼塊被執行並且該值被計算。 在這裏,延遲列印一個消息,表明該方法已經輸入。 接下來,延遲列印帶有其值的消息。 最後,延遲返回't'

以下程式顯示如何實現按名稱調用函數。

object Demo {
   def main(args: Array[String]) {
        delayed(time());
   }

   def time() = {
      println("Getting time in nano seconds")
      System.nanoTime
   }
   def delayed( t: => Long ) = {
      println("In delayed method")
      println("Param: " + t)
   }
}

將上述程式保存在原始檔案:Demo.scala 中,使用以下命令編譯和執行此程式。

D:\software\scala-2.12.3\bin>scalac Demo.scala

D:\software\scala-2.12.3\bin>scala Demo
In delayed method
Getting time in nano seconds
Param: 11812503856935

上一篇: Scala函數 下一篇: Scala閉包