深入Kotlin 專項 Lambda表示式

2021-08-07 20:21:52 字數 1151 閱讀 5367

lambda表示式是乙個特殊的匿名函式,匿名函式只是沒有名稱,而lambda更絕,不僅沒有了名字,連關鍵字都省了o( ∩ _ ∩ )o 哈哈 ~

那麼這麼神奇的lambda究竟長啥樣呢?我們來看看:

val sum

= //lambda表示式

val add = fun(x:int,y:int) = x+y //匿名函式

fun main(args: array

<

string

>)

上面的例子中:我們可以看出,lambda表示式用大括號{}括起來,引數和函式體之間用箭頭連線 -> ,就是這麼簡單,有沒有很簡潔呢,我們再來看個例子。

哦,對了,上面的例子中,我們把lambda表示式賦給了變數sum,然後在使用的時候就如同在使用函式一樣,通過括號呼叫,實際上這裡是呼叫了函式的invoke方法,所以,我們可以這樣使用:

sum.invoke(2,3)
這麼神奇的lambda表示式只有這麼點用法嗎?當然不是,kotlin中很多地方都能看到lambda,如我們最常見的陣列遍歷方法foreach。kotlin中foreach方法接收乙個action: (t)->unit 的lambda函式或lambda表示式,例如我們可以這樣:

array.foreach()
我們傳入了乙個lambda表示式。當然,這麼寫很不簡潔。

kotlin中,有如下幾條簡寫規則:

array.foreach()
看著是不是比之前好點了

array.foreach
當然我們還可以這麼寫:

array.foreach(::println)
這和第一種寫法很相似,只是這裡我們直接傳入了對println的引用

最後,我們再來看看lambda和匿名函式或一般函式的差別:

lambda表示式,我們稱其為表示式,所以它不是函式。當我們在其中使用return返回時需要注意,我們直接看**:

fun main(args: array

) array.foreach(::println)

}

kotlin的lambda表示式

lambda是什麼 簡單來講,lambda是一種函式的表示方式 言外之意也就是說乙個lambda表示式等於乙個函式 更確切的說 lambda是乙個未宣告的函式,會以表示式的形式傳遞 來歷 python 乙個函式返回了乙個內部函式,該內部函式引用了外部函式的相關引數和變數,我們把該返回的內部函式稱為閉...

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

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

學習kotlin第12天 lambda表示式

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