Android Kotlin Lambda表达式(七)

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。

Lambda表达式,也可称为匿名函数。以箭头操作符->将表达式拆分成两部分。

简单语法

// 没有参数
var f1 = { -> println("in f1")}

// 一个参数
var f2 = { x: Int -> println("in f2 x = $x")}

// 多个参数,最后一个表达式可以作为返回值
var f3 = { x: Int, y: Int -> x + y}

// 指定函数类型
var f4: (Int, Int, Int) -> Int = { x, y, z -> x + y + z}

// 只有一个参数时,可以省略声明,使用参数名it
var f5: (Int) -> Int = { it + 4 }

fun main(args: Array<String>) {
    f1()  // in f1
    f2(3)  // in f2 x = 3
    println(f3(3, 4))  // 7
    println(f4(3, 4, 5))  // 12
    println(f5(6))  // 10
}

Lambda表达式可以用作参数使用

fun <T> max(list : List<T>, greaterThan: (T, T) -> Boolean): T? {
    var value: T? = null
    for (item in list) {
        if (value == null || greaterThan(item, value) ) {
            value = item
        }
    }
    return value
}

fun main(args: Array<String>) {
    var list = listOf(5, 9, 13, 51, 31, 69, 12, 48)

    var max = max(list, {x, y -> x > y})
    println(max) // 69	
}

如果Lambda表达式是最后一个参数,可以把大括号挪到外面

fun main(args: Array<String>) {
    var list = listOf(5, 9, 13, 51, 31, 69, 12, 48)

    var max = max(list) {
        x, y -> x > y
    }
    println(max)  // 69
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Kotlin中,Lambda表达式是一种简洁的方式来定义函数。通过使用Lambda表达式,我们可以将函数作为参数传递给其他函数,或者在需要函数作为返回值的地方使用它们。Lambda表达式的基本语法是使用箭头符号(->)将参数列表和函数体分隔开。例如:{参数列表 -> 函数体}。当Lambda表达式中只有一个参数时,可以使用it关键字来表示该参数,而不需要指定参数名。这是Kotlin语言的约定。此外,在Kotlin中还存在一种称为"尾随Lambda表达式"或"末尾Lambda表达式"的语法,当一个函数的最后一个参数是一个函数类型时,我们可以将Lambda表达式写在大括号内,而不是传递给函数的圆括号内。这种语法可以进一步简化代码。Lambda表达式Kotlin中被广泛运用,尤其在Android开发中,它能够减少代码量并提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Kotlin——高级篇(一):Lambda表达式详解](https://blog.csdn.net/weixin_30376453/article/details/95751745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [kotlinlambda表达式](https://blog.csdn.net/flytosky21/article/details/130030489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值