日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kotlin学习笔记——lambda表达式

發布時間:2024/4/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kotlin学习笔记——lambda表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先簡單說說lambda表達式: (Type a, Type b, ...) -> {...} 左邊是參數(參數類型可省略),如果只有一個參數括號也可以省略,右邊是函數體和返回結果(大括號可省略)。 如: int add(int a, int b){ return a + b; } 可以寫成 (a, b) -> a+b 以click為例,在kotlin中,匿名內部類可以: view.setOnClickListener(object: OnClickListener{override fun onClick(view: View){toast("test")} }) 通過lambda簡化為 (在kotlin中如果一個Interface包單個函數可以被替代為一個函數) view.setOnClickListener({view -> toast("test")}) ? ?//用大括號將lambda匿名函數包圍 如果左邊的參數沒有使用,也可以省略 view.setOnClickListener({ toast("test") }) 如果函數的最后一個參數是一個函數,可以放在括號后面 view.setOnClickListener() { toast("test") } 如果函數只有一個參數,可以省略括號 view.setOnClickListener{ toast("test") } 1、it引用 另外一種情況當左邊的參數被使用時,且函數只有這一個參數,如 view.setOnClickListener({ view -> toast(view.tag.toString()) }) 這時候可以用it引用來代替這個參數,可直接簡化為 view.setOnClickListener{ toast(it.tag.toString()) } 2、lambda匿名函數聲明 var obj: (Type, Type, ...) -> Type 左邊是參數類型,可以有多個但是括號不能省略。右邊是返回類型,如果是空則是Unit。如: setListener(var item: Item, var listener: (Item) -> Unit){view.setOnClickListener{ listener(item) } } 注意:在這里應該是view.setOnClickListener{ view -> { listener(item) } },是在OnClickLisrener的OnClick函數中執行lisrener(item)的,但是由于view未使用所以可以繼續簡化成上面的樣子 使用時: setListener(item) { toast(it.name) } 注意:如果沒有參數則 var obj: () -> Type,使用時不要傳入參數,但是括號不能省略,如view.setOnClickListener{ listener() } 3、lambda函數不執行 使用匿名函數時一定要有括號,沒有括號也不會報錯,但是這個函數不會執行,如 setListener(var item: Item, var listener: (Item) -> Unit){view.setOnClickListener{ listener } }

并不會報錯,但是點擊后不執行函數,一定要帶上括號和參數,如view.setOnClickListener{ listener(item) }

?

總結

以上是生活随笔為你收集整理的kotlin学习笔记——lambda表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。