scala方法和涵數的宣告以及方法轉換成涵數:
方法宣告:
scala>def m1(x:int, y:int) : int = x + y
m1: (x: int, y: int)int
scala>m1(3,4)
res9: int = 7
x + y為涵數體
涵數宣告:
scala>val f1 = (x: int, y: int) => x + y
f1: (int, int) =>int =
(int, int)引數型別
黃色是返回型別,後面的 表示兩個引數的乙個涵數,x + y為涵數體
scala>def m2(f:(int,int)=>int) = f(3,4)
m2: (f: (int, int) => int)int 定入的乙個方法m2並且方法的引數是乙個涵數型別的引數,後面是方法的實現體
scala>val f1=(x:int,y:int) => x+y
f1: (int, int) => int = 定義乙個有兩個引數的涵數 f1,做為方法m2的引數傳入方法體
scala>m2(f1) 方法裡面傳入涵數名呼叫(即scala可以將乙個涵數當做引數進行傳入)
res10: int = 7
方法轉換為乙個涵數;
scala> def m1(x:int,y:int):int=x+y //定義乙個兩個引數為int型別且返回型別也是乙個int的乙個方法m1
m1: (x: int, y: int)int
scala>val f1 = m1 _ //將m1轉換成涵資料並用 f1 接收 方法名+空格+下劃線
f1: (int, int) => int =
然後就可以呼叫 m2(f1)
scala> m2(f1) 傳入轉換過的涵數
res12: int = 7
scala> m2(m1) 直接傳入方法也沒有報錯是因為scala內部自動隱式轉換成了涵數後當做m2方法的引數傳入的,這有個隱式轉換過程
res13: int = 7
scala的方法和函式
def fun x int,y int int x y def 關鍵字.fun 方法名 x,y為方法引數,方法的返回型別可以不寫,編譯器自動推斷,對於遞迴函式 必須宣告其返回型別 將方法轉換為函式 scala fun 2,4 res0 int 6 scala fun res2 int,int int...
Scala集合的常用方法以及Map的可變和不可變
package com.chengzi.collection import scala.collection.mutable desc 對scala集合做乙個梳理 author chengli date 2021 3 3 9 24 object collectiontest println list...
scala函式和方法的區別
方法函式 定義是組成類的一部分 是繼承了這些 trait 的類的物件 實現方式 def fun name 引數列表 val fun 引數列表 引數列表 可有,可無 必須有,但可以為空 需要保留 呼叫fun name 方法名意味著呼叫,無參是可以省略 fun 函式名代表函式本身,必須保留引數列表 轉換...