kotlin的lambda表示式

2021-08-13 17:51:11 字數 1282 閱讀 1818

lambda是什麼

簡單來講,lambda是一種函式的表示方式(言外之意也就是說乙個lambda表示式等於乙個函式)。更確切的說:lambda是乙個未宣告的函式,會以表示式的形式傳遞

來歷

python:乙個函式返回了乙個內部函式,該內部函式引用了外部函式的相關引數和變數,我們把該返回的內部函式稱為閉包

在kotlin裡面我們通常說的閉包就是lambda表示式

首先看高階函式

將函式作為引數或者返回函式的函式叫高階函式

定義乙個高階函式

fun 高階函式名(引數函式名:引數函式型別):高階函式返回型別

fun cacl(a:int,b:int,action:(int,int)->int):int
呼叫

1,普通呼叫

var

sum= cacl(20, 30, )

2,去括號呼叫

注:在 kotlin 中有乙個約定,如果函式的最後乙個引數是乙個函式,並且你傳遞乙個 lambda 表示式作為相應的引數,你可以在圓括號之外指定它

var

sum= cacl(20, 30)

lambda的形式

1,無參lambda

()
2,有參lambda

(20,30)
3,有返回值的 lambda返回值(返回最後一行)

val result1 = ()
4,通過變數儲存lambda

val function =
5,如果lambda引數只有乙個,可以使用it表示

var result = add(a)
6,lambda訪問外部變數

var a = 10

()

注:在 kotlin中還有另外乙個約定,如果乙個函式的引數只有乙個,並且引數也是乙個函式,那麼可以省略圓括號

view.setonclicklistener() => 

view.setonclicklistener

Kotlin學習系列 函式,Lambda表示式

函式 kotlin中,使用fun關鍵字定義乙個函式,函式引數使用 pascal 表示法定義,即 name type。引數用逗號隔開。每個引數必須有顯式型別。fun foo arg1 string,arg2 boolean,arg3 int int 當函式只有單個表示式時,可以省略花括號,直接寫在 之...

Kotlin的Lambda表示式小結

1.lambda表示式就是匿名函式,lambda表示式返回值是最後一行內容的返回值。fun main args array string val sum 2.lambda表示式也具有型別,型別表現形式與引數 返回值型別有關,型別是定義過的23種function介面型別,具體可通過列印函式來檢視。3....

學習kotlin第12天 lambda表示式

繼續昨天的,從昨天的第14個坑開始。坑1 以map為例。文件上為如下 呼叫時由於 lambda 表示式在圓括號以外,而圓括號中已無其它引數,故可以省略 fun list map transform t r list fun main args array println doubled 在idea中...