Scala 傳名引數和傳值引數

2022-09-18 17:33:12 字數 556 閱讀 3886

1

package

com.atguigu.chapter0423

object controlabstraction

10 f0(23)

11 def f1():int=

15f0(f1())

1617

//2. 傳名引數(傳遞**塊) a : =>int **塊的返回值是int型別的

我們可以看到:

當f1作為乙個**塊傳入f2時,每次在f2中用到了變數a,那麼整個f1函式就會被執行一次!

當f1的返回值作為引數傳入f2時,每次在f2中用到了變數a,那麼就會把a替換為傳入的引數值,而f1函式只會執行一次!

scala的傳名引數和傳值引數

傳名引數 傳值引數 因為scala 建議如果函式的引數只有乙個,可以考慮使用 代替 因此test和test1的呼叫都是 又因為test的引數是傳名引數函式,因此傳入的引數是不會被執行的,而test1的引數是傳值引數,因此需要先計算引數的值,然後再傳入test1的方法體中,恰好test1傳入引數的計算...

scala 傳名函式和傳值函式

scala的直譯器在解析函式引數 function arguments 時有兩種方式 先計算引數表示式的值 reduce the arguments 再應用到函式內部 或者是將未計算的引數表示式直接應用到函式內部。前者叫做傳值呼叫 call by value 後者叫做傳名呼叫 call by nam...

Scala 傳值呼叫和傳名呼叫

傳值呼叫時,引數只在呼叫時計算一次,後續重複使用計算的結果 傳名呼叫時,引數在呼叫時不會計算,只有真正用到引數的時候才會計算 x int object scalafunction def printbyname x int unit def printbyvalue x int unit def m...