1package
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...