scala引數傳遞

2021-07-09 15:27:36 字數 831 閱讀 6759

在程式語言中,引數傳遞有多種方式,比如c++中的傳遞位址和傳遞數值。在scala中多了一種名稱傳遞

名稱傳遞表示傳遞的引數名稱會替代函式中的引數名稱。

我們舉個例子

def f(x: => int) = x * x
=>int表示乙個**塊,最終返回int

通過以下**呼叫函式f

var y =0

f

會替代x

*
這時會出現乙個問題,名稱衝突,scala中,函式引數中的識別符號名稱不能引用或遮蓋名稱,執行順序如下。

*  = 2*  = 2* 3=6

^ y=2

^y=3

這種形式的函式不帶有引數, 比如size()返回乙個數值. 注意它與匿名函式的區別,雖然它們很相似。

() => println("i'm an anonymous function")
這是乙個無參匿名函式,它的型別是unit

() => unit
所以我們可以定義乙個無參函式

val f: () =>

unit = () => println("i'm an anonymous function")

def f(x: unit) = ...
def foo(code : int)

scala 引數傳遞 按值傳遞 按名傳遞

package leetcode import scala.util.random object function args def getrandom call by name 按名傳遞,傳入引數變數名,如果runbyname內部用到,再去求值 f string int long表示 該無參函式的...

Scala函式特性系列 按名稱傳遞引數

通常情況下,函式的引數是傳值引數 即引數的值在它被傳遞給函式之前被確定。但是,如果我們需要編寫乙個接收引數不希望馬上計算,直到呼叫函式內的表示式才進行真正的計算的函式。對於這種情況,scala提供按名稱引數呼叫函式。示例 如下 結果 在 中,如果定義函式的時候,傳入引數不是傳入的值,而是傳入的引數名...

scala方法引數

方法引數 scala中的方法引數,使用比較靈活。它支援以下幾種型別的引數 預設引數 帶名引數 變長引數 1 預設引數 在定義方法時可以給引數定義乙個預設值。示例定義乙個計算兩個值相加的方法,這兩個值預設為0 呼叫該方法,不傳任何引數 參考 scala x,y帶有預設值為0 def add x int...