[ Kotlin ] Function Type Lambda表示法筆記

在Kotlin當中對於Lambda的支援相當強大

但對於一開始從Java轉入Kotlin的我來說稍微有點困擾

雖然Java 8開始也支援Lambda表示式,但這邊主要以Kotlin為主


內文記錄一些Kotlin上對於Lambda的使用筆記




1.Function Type

在Kotlin當中可以定義一個Function將其作為變數進行傳遞

例如


val randomTest = { Random().nextInt(12) +1 }


表示我定義一個randomTest的Function Type變數,大括號裡頭是要執行的內容

這是最簡略的寫法

呼叫randomTest()之後會回傳 Random().nextInt(12) +1 的執行結果


其實在回傳值前面還可以多塞一點動作,例如


val randomTest = {

    println("randomTest\n")

    Random().nextInt(12) +1

}


要注意,回傳的數值一定要放在最後一行。



此外,你也可以定義傳入的參數與回傳的參數型態


val randomTest: (Int, String) -> Int = { randomArge, message ->

    println("$message \n")

    Random().nextInt(randomArge) +1

}



randomTest: (Int, String) -> Int

randomTest 指定傳入兩個參數型態,分別為Int與String,並回傳 Int

大括號裡頭的 randomArge 與 message 則是傳入參數的變數名稱

結構解釋如下


變數名稱: (傳入值型態1, 傳入值型態2) -> 回傳值型態 = { 變數名稱1,變數名稱2 ->

// Do something

}



Kotlin支援型別判斷,可以不指定回傳值型態,因此也可以寫成這樣


變數名稱 = { 變數名稱1: 變數1型態, 變數名稱2: 變數2型態 ->

// Do something

}



參考資料:
Kotlin Tutorial(16)介面與實作(下)
http://www.codedata.com.tw/kotlin/kt16/


初探 Kotlin Lambda 表達式
https://medium.com/@louis383/%E5%88%9D%E6%8E%A2-kotlin-lambda-%E8%A1%A8%E9%81%94%E5%BC%8F-cfe8796c9fac

沒有留言:

張貼留言

Layout疑難雜症筆記

 這裡記錄一些Layout時View元件比較特殊的狀況與處理方式,內容會陸續增加。