scala方法和涵數的宣告以及方法轉換成涵數

2022-08-31 13:30:10 字數 1303 閱讀 3901

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 函式名代表函式本身,必須保留引數列表 轉換...