傳名引數
傳值引數
因為scala
建議如果函式的引數只有乙個,可以考慮使用{}代替(),因此test和test1的呼叫都是{},又因為test的引數是傳名引數函式,因此傳入的引數是不會被執行的,而test1的引數是傳值引數,因此需要先計算引數的值,然後再傳入test1的方法體中,恰好test1傳入引數的計算結果是乙個匿名函式,因此可以執行,如果test1的傳入引數的計算結果不是函式,那麼就會報錯。所以test和test1的呼叫,輸出結果有所不同。
文章參考 :
=>unti和:=>的區別
, 當然本片文章的內容介紹的是:=>和():=>的區別。
而=>unit和:=>的區別是,() => unit是乙個函式,=> unit 是乙個執行結果為unit的表示式
Scala 傳名引數和傳值引數
1 package com.atguigu.chapter0423 object controlabstraction 10 f0 23 11 def f1 int 15f0 f1 1617 2.傳名引數 傳遞 塊 a int 塊的返回值是int型別的 我們可以看到 當f1作為乙個 塊傳入f2時,每...
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...