我們使用「_」 來代替單個的引數,實際上你也可以使用「_」來代替整個引數列表,比如說,你可以使用 print _ 來代替 println (_).
somenumbers.foreach(println _)scala編譯器自動將上面**解釋成:
somenumbers.foreach( x => println (x))
scala> def sum = (_:int) + (_ :int) + (_ :int)乙個部分應用的函式指的是你在呼叫函式時,不指定函式所需的所有引數,這樣你就建立了乙個新的函式,這個新的函式就稱為原始函式的部分應用函式,比如說我們固定sum的第一和第三個引數,定義如下的部分應用函式:sum: (int, int, int) => int
scala> sum (1,2,3)
res0: int = 6
scala> val b = sum ( 1 , _ :int, 3)變數b的型別為一函式,具體型別為function1 (帶乙個引數的函式),它是由sum 應用了第乙個和第三個引數,構成的。 呼叫b(2),實際上呼叫sum (1 ,2,3)。b: int => int = scala> b(2)
res1: int = 6
再比如我們定義乙個新的部分應用函式,只固定中間引數:
scala> val c = sum (_:int, 2, _:int)變數c的型別為function2,呼叫c(1,3) 實際上也是呼叫sum (1,2,3)。c: (int, int) => int = scala> c(1,3)
res2: int = 6
在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 變數名 輸入引數型別和個數 函式實現和返回值...