Scala應用函式

2021-09-07 06:07:30 字數 1008 閱讀 7919

我們使用「_」 來代替單個的引數,實際上你也可以使用「_」來代替整個引數列表,比如說,你可以使用 print _ 來代替 println (_).

somenumbers.foreach(println _)
scala編譯器自動將上面**解釋成:

somenumbers.foreach( x => println (x))
scala> def sum = (_:int) + (_ :int) + (_ :int)

sum: (int, int, int) => int

scala> sum (1,2,3)

res0: int = 6

乙個部分應用的函式指的是你在呼叫函式時,不指定函式所需的所有引數,這樣你就建立了乙個新的函式,這個新的函式就稱為原始函式的部分應用函式,比如說我們固定sum的第一和第三個引數,定義如下的部分應用函式:

scala> val b = sum ( 1 , _ :int, 3)

b: int => int = scala> b(2)

res1: int = 6

變數b的型別為一函式,具體型別為function1 (帶乙個引數的函式),它是由sum 應用了第乙個和第三個引數,構成的。 呼叫b(2),實際上呼叫sum (1 ,2,3)。

再比如我們定義乙個新的部分應用函式,只固定中間引數:

scala> val c = sum (_:int, 2, _:int)

c: (int, int) => int = scala> c(1,3)

res2: int = 6

變數c的型別為function2,呼叫c(1,3) 實際上也是呼叫sum (1,2,3)。

在scala中,如果你定義乙個部分應用函式並且能省去所有引數,比如println _ ,你也可以省掉「_」本身,比如:

somenumbers.foreach(println _)
可以寫成:

somenumbers.foreach(println)

scala 部分應用函式與偏函式

部分應用函式 是指乙個函式有n個引數,而我們為其提供少於n個引數,那就得到了乙個部分應用函式.def sum a int,b int,c int a b c 那麼就可以從這個函式衍生出乙個偏函式是這樣的 def p sum sum 1,int,int 於是就可以這樣呼叫p sum 2,3 相當於呼叫...

scala 主建構函式 Scala 建構函式

scala建構函式 類由類成員 如字段和方法 組成。字段儲存物件的狀態,並使用val或var定義。方法完成物件的計算任務,並使用定義關鍵字def。在scala中,類的整個主體是建構函式。如果建構函式採用零引數,則可以省略引數列表。scala區分用val欄位,var欄位,private val或pri...

Scala12 Scala高階函式

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