精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

Scala 函數傳名調用(call-by-name)

Scala 函數傳名調用(call-by-name)

Scala 函數 Scala 函數

Scala的解釋器在解析函數參數(function arguments)時有兩種方式:

  • 傳值調用(call-by-value):先計算參數表達式的值,再應用到函數內部;
  • 傳名調用(call-by-name):將未計算的參數表達式直接應用到函數內部

在進入函數內部前,傳值調用方式就已經將參數表達式的值計算完畢,而傳名調用是在函數內部進行參數表達式的值計算的。

這就造成了一種現象,每次使用傳名調用時,解釋器都會計算一次表達式的值。

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

   def time() = {
      println("獲取時間,單位為納秒")
      System.nanoTime
   }
   def delayed( t: => Long ) = {
      println("在 delayed 方法內")
      println("參數: " + t)
      t
   }
}

以上范例中我們聲明了 delayed 方法, 該方法在變量名和變量類型使用 => 符號來設置傳名調用。執行以上代碼,輸出結果如下:

$ scalac Test.scala 
$ scala Test
在 delayed 方法內
獲取時間,單位為納秒
參數: 241550840475831
獲取時間,單位為納秒

范例中 delay 方法打印了一條信息表示進入了該方法,接著 delay 方法打印接收到的值,最后再返回 t。

Scala 函數 Scala 函數

下一節:Scala 函數 - 可變參數

Scala 教程

相關文章