Scala函數傳名調用

Scala的解析器在解析函數參數時有兩種方式

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

在進入函數內部前,傳值調用方式就已經將參數表達式的值計算完畢;而傳名調用是在函數內部進行參數表達式的值計算的,這樣每次使用傳名調用時,解釋器都會調用一次表達式的值。
例如:

callbyname

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

result

在main方法中通過prt(param1())調用prt方法,通過傳名調用的方式將param1()方法傳遞給prt的參數t,由於是傳名調用,所以在prt方法中每使用一次t都會調用一次param1()方法。因此打印了兩次param1()方法中的獲取參數。

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