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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )

發(fā)布時間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

        • I . Lambda 表達式 簡介
        • II . Lambda 表達式語法
        • III . Lambda 表達式類型
        • IV . Lambda 表達式返回值
        • V . Lambda 表達式調(diào)用
        • VI . Lambda 表達式完整語法示例 ( 聲明 | 實現(xiàn) | 調(diào)用 )



I . Lambda 表達式 簡介



Lambda 表達式 簡介 :


① 作用 : Lambda 表達式可以作為函數(shù)參數(shù) , 傳遞到函數(shù)中 , 使代碼結(jié)構(gòu)更加緊湊 ;

② 應(yīng)用場景 : 集合中擴展集合操作 , 當做函數(shù)參數(shù) , 替代匿名內(nèi)部類 ;

③ 好處 : Lambda 表達式語法簡潔 , 避免了冗長的函數(shù)聲明調(diào)用過程 ;

④ 函數(shù)式編程 : 函數(shù)作為輸入和輸出 ; 在集合操作中 , 過濾 filter , 映射 map 等操作傳入 Lambda 表達式 作為參數(shù) , 很好地體現(xiàn)了函數(shù)式編程思想 ;



II . Lambda 表達式語法



Lambda 表達式 語法 :


{ a : Int, b : Int -> a + b}

① 示例說明 : 上面的代碼示例是 Lambda 表達式的標準形式 , 其參數(shù)列表是 a : Int, b : Int , 在 -> 后面的函數(shù)體中, 可以直接調(diào)用 a 和 b 兩個變量 ;

② 大括號 : Lambda 表達式需要完整的寫在大括號中 , 其參數(shù)列表 , 執(zhí)行代碼 , 返回值 , 都寫在一個大括號 {} 里 ;

③ 參數(shù)列表 : Lambda 表達式的參數(shù)列表 , 定義在 “->” 符號之前 , 格式為 “變量名 : 變量類型” , 多個參數(shù)使用逗號隔開 ;

④ 函數(shù)體 : Lambda 表達式的函數(shù)體可以由 111 行 , 也可以有多行 , 最后一行默認是 Lambda 表達式的返回值 ;

⑤ -> 符號 : 用于分割 參數(shù)列表 與 函數(shù)體 ;



III . Lambda 表達式類型



1 . Lambda 表達式 類型 : 分析下面示例中的 var add : (Int, Int)->Int 變量類型聲明部分 ;


var add : (Int, Int)->Int = { a : Int, b : Int ->println("計算 : a + b = ${a + b}")a + b }

① 變量或常量 : Lambda 表達式可以聲明成變量 var , 也可以聲明成常量 val ;

② 變量 / 常量 名稱 : 符合標識符規(guī)則即可 ;

③ Lambda 表達式參數(shù)列表 : 在括號中 () 表示 , 如果沒有參數(shù) , 括號內(nèi)空著即可 , 如果有多個參數(shù)使用逗號隔開 ;

④ -> 符號 : 在 Lambda 表達式類型中 , 用于分割 參數(shù)列表返回值類型 ;

⑤ Lambda 表達式返回值 : 只允許有一個返回值 , 在 -> 符號之后 , 如果返回值為空 , 記作 Unit ;



2 . Lambda 表達式 類型聲明 示例 :


① 無參數(shù) 空類型返回值 的 Lambda 表達式 類型 : ()->Unit , 無參數(shù) () 內(nèi)空著 , 返回值為空 , 記作 Unit ;

// 無參數(shù) Unit 空類型返回值的 Lambda 表達式 var lambda1 : ()-> Unit = { println("lambda1") }

② 單個參數(shù) Int 類型返回值 的 Lambda 表達式 類型 : (Int)->Int , 其參數(shù)是 Int 類型 , 返回值也是 Int 類型的 ;

// Int 類型參數(shù) , Int 類型返回值 , 的 Lambda 表達式 var lambda2 : (Int)-> Int = { a : Int -> a + 1000}

③ 多個參數(shù) Int 類型返回值 的 Lambda 表達式 類型 : (Int, Int)->Int , 其有兩個 Int 類型參數(shù) , 使用逗號隔開 ;

// 多個參數(shù)的 Lambda 表達式 var lambda4 : (Int, Int)->Int = { a : Int, b : Int ->println("計算 : a + b = ${a + b}")a + b }

④ 使用 Lambda 表達式作為參數(shù) String 返回值類型 的 Lambda 表達式類型 : (Int, Int, (Int, Int)->Int)->Int , 該 Lambda 表達式類型有 333 個參數(shù) , 分別是兩個 Int 和 (Int, Int)->Int , 最后一個參數(shù)的類型是 Lambda 表達式類型 ;

// Lambda 表達式類型作為參數(shù)的 Lambda 表達式 , 第 3 個參數(shù)是 Lambda 表達式類型的參數(shù) var lambda5 : (Int, Int, (Int, Int)->Int)->Int = { a : Int, b : Int, c : (Int, Int)->Int ->println("計算 : a + b = ${c.invoke(a, b)}")c.invoke(a, b) }

這里關(guān)于 Unit 空類型說明一下 , 如果沒有參數(shù) , 括號中空著即可 , 如果返回值為空類型 , 必須寫成 Unit 類型的返回值 , 相當于 Java 中的 void 空類型 ;



IV . Lambda 表達式返回值



1 . Lambda 表達式返回值 :


// 多個參數(shù)的 Lambda 表達式 var lambda4 : (Int, Int)->Int = { a : Int, b : Int ->println("計算 : a + b = ${a + b}")a + b }

① 返回值設(shè)置 : Lambda 表達式的返回值是 Lambda 表達式函數(shù)體的最后一行 ;

② 代碼解析 : 如上述代碼 , 其函數(shù)體部分有兩行組成 , 第一行 println("計算 : a + b = ${a + b}") 打印計算公式 , 第二行才是真正的返回值 , 表示返回 a + b 的值 , 作為 Lambda 表達式的返回值 ;

③ 調(diào)用返回值 : 即使用 lambda4.invoke( 1 , 2 ) 或 lambda4 ( 1, 2 ) 調(diào)用 Lambda 表達式 , 返回 1 + 2 = 3 計算結(jié)果 , 最終都返回 3 ;


2 . 返回值類型錯誤 : 注意不要放錯位置 , 如果最后一行的結(jié)果類型 , 與 Lambda 表達式的類型不一致 , 不是 Int 類型的返回值 , 會導致錯誤產(chǎn)生 ; 如下圖示例 , 在最后一行寫成字符串類型 , 編譯時直接報錯 ;



V . Lambda 表達式調(diào)用



1 . Lambda 表達式調(diào)用 : 使用 invoke 方法 , 或直接當做函數(shù)調(diào)用 , 即可調(diào)用 Lambda 表達式 ;


① 直接調(diào)用 : 調(diào)用格式為 “Lambda表達式變量 / 常量 ( 實際參數(shù)列表 )” ;

② invoke 調(diào)用 : 調(diào)用格式為 “Lambda表達式變量 / 常量.invoke( 實際參數(shù)列表 )” ;



2 . Lambda 表達式調(diào)用示例 :


① Lambda 表達式 代碼示例 :

// 4 . 多個參數(shù)的 Lambda 表達式 var lambda4 : (Int, Int)->Int = { a : Int, b : Int ->println("計算 : a + b = ${a + b}")a + b }

② Lambda 表達式調(diào)用方法 : 使用 lambda4.invoke(1, 2) 和 lambda4(1, 2) 兩種形式 , 都可以調(diào)用 Lambda 表達式 ;

fun main() {println("${lambda4.invoke(1, 2)}")println("${lambda4(1, 2)}") }

③ Lambda 表達式調(diào)用 執(zhí)行結(jié)果 : 兩種調(diào)用方式實現(xiàn)的效果是一樣的 ;

計算 : a + b = 3 3 計算 : a + b = 3 3

VI . Lambda 表達式完整語法示例 ( 聲明 | 實現(xiàn) | 調(diào)用 )



Lambda 表達式完整示例 : 下面的示例中 , 分別聲明了 555 種不同類型的 Lambda 表達式示例 , 并使用不同的方法進行調(diào)用 ;


// 1 . 無參數(shù) Unit 空類型返回值的 Lambda 表達式 var lambda1 : ()-> Unit = { println("lambda1") }// 2 . Int 類型參數(shù) , Int 類型返回值 , 的 Lambda 表達式 var lambda2 : (Int)-> Int = { a : Int -> a + 1000}// 3 . 多行代碼的 Lambda 表達式, 最后一行是返回值 var lambda3 : (Int)-> Int = { a : Int ->println("lambda3 多行代碼")a + 1000 }// 4 . 多個參數(shù)的 Lambda 表達式 var lambda4 : (Int, Int)->Int = { a : Int, b : Int ->println("計算 : a + b = ${a + b}")a + b }// 5 . Lambda 表達式類型作為參數(shù)的 Lambda 表達式 , 第 3 個參數(shù)是 Lambda 表達式類型的參數(shù) var lambda5 : (Int, Int, (Int, Int)->Int)->Int = { a : Int, b : Int, c : (Int, Int)->Int ->println("計算 : a + b = ${c.invoke(a, b)}")c.invoke(a, b) }fun main() {//1 . 調(diào)用 無參數(shù) Unit 空類型返回值的 Lambda 表達式 , 分別用兩種形式進行調(diào)用println("\n執(zhí)行 lambda1 調(diào)用 : \n")println("${lambda1.invoke()}")println("${lambda1()}")//2 . Int 類型參數(shù) , Int 類型返回值 , 的 Lambda 表達式println("\n執(zhí)行 lambda2 調(diào)用 : \n")println("${lambda2.invoke(100)}")println("${lambda2(100)}")//3 . 調(diào)用 多行代碼的 Lambda 表達式println("\n執(zhí)行 lambda3 調(diào)用 : \n")println("${lambda3.invoke(200)}")println("${lambda3(200)}")//4 . 調(diào)用 多個參數(shù)的 Lambda 表達式println("\n執(zhí)行 lambda4 調(diào)用 : \n")println("${lambda4.invoke(1, 2)}")println("${lambda4(1, 2)}")//5 . 調(diào)用 Lambda 表達式類型作為參數(shù)的 Lambda 表達式 , 第 3 個參數(shù)是 Lambda 表達式類型的參數(shù)println("\n執(zhí)行 lambda5 調(diào)用 : \n")println("${lambda5.invoke(3 , 4 , lambda4)}")println("${lambda5(3 , 4 , lambda4)}") }

執(zhí)行結(jié)果 :

執(zhí)行 lambda1 調(diào)用 : lambda1 kotlin.Unit lambda1 kotlin.Unit執(zhí)行 lambda2 調(diào)用 : 1100 1100執(zhí)行 lambda3 調(diào)用 : lambda3 多行代碼 1200 lambda3 多行代碼 1200執(zhí)行 lambda4 調(diào)用 : 計算 : a + b = 3 3 計算 : a + b = 3 3執(zhí)行 lambda5 調(diào)用 : 計算 : a + b = 7 計算 : a + b = 7 計算 : a + b = 7 7 計算 : a + b = 7 計算 : a + b = 7 計算 : a + b = 7 7

總結(jié)

以上是生活随笔為你收集整理的【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。