Scala2 8嘗鮮 命名引數與預設引數

2021-08-30 01:37:42 字數 904 閱讀 3135

翻  譯:[url=

scala2.8引入了新的特性——命名引數——這意味著我們可以通過使用引數名來指定引數。命名引數可以避免在引數型別相同的情況下混淆各個引數的含義,增強了**的可讀性。

def resize(width: int, height: int) = 

resize(width = 120, height = 42)

並且,scala2.8支援在方法中使用預設引數。在當前的版本的scala中([color=brown]eastsun注:[/color]指2.8之前的版本),只能通過方法過載來實現引數預設值。這在一定程度上導致**冗餘,而預設引數可以避免這一點。

def f(elems: list[int], x: int = 0, cond: boolean = true)

f(list(1))

f(nil, cond = false)

上面的示例同時示範了命名引數允許選擇性使用預設引數:在f方法的第二個呼叫中,f使用了引數x的預設值,而沒有使用cond的預設值。

[b][size=large]編譯器生成copy方法[/size][/b]

命名引數和預設引數乙個非常有用的運用是[color=orange]編譯器自動為case類生成copy方法[/color]。這個方法採取一種輕量級的語法來建立乙個原始例項的修改拷貝。copy方法具有和被拷貝的case類的基本構造方法同樣型別和引數,並且每個引數都使用基本構造方法中相應值作為預設值。

case class a[t](a: t, b: int) 

val a1: a[int] = a(1, 2)

val a2: a[string] = a1.copy(a = "somestring")

第28講 Scala提取器Extractor

所謂提取器,就是從表示式獲取具體值。其作用,可以根據某一規則,非常方便的獲取到想要的值 例項 def match arr arr any arr match執行 def main args array string 執行例項的結果 array 0 array x 0,y 1 array 0 othe...

Scala12 Scala高階函式

scala混合了物件導向和函式式的特性,我們通常將可以作為引數傳遞到方法中的表示式叫做函式。在函式式程式語言中,函式是 頭等公民 高階函式包含 作為值的函式 匿名函式 閉包 柯里化等等。可以像任何其他資料型別一樣被傳遞和操作的函式。定義函式時格式 val 變數名 輸入引數型別和個數 函式實現和返回值...

Scala七 Scala核心一 函式

1.如果函式體只有一行 則可以不用寫 比如 def print x int println x 一行上的多條語句用分號隔開,則只有第一句屬於方法體,例如 def printwithvalue x int string println x abc 上面的 報錯,因為,printwithvalue的方法...