You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何为Lambda表达式添加条件?实现指定infix扩展函数

解决方案

首先,你的condition参数需要定义为函数类型,用来接收单个Pair<Int, Int>并返回布尔值,以此判断该Pair是否符合筛选条件,具体类型为(Pair<Int, Int>) -> Boolean。

接下来完成扩展函数的实现:通过filter方法筛选符合条件的Pair,再用map提取每个Pair的第一个元素。

完整代码如下:

fun main() {
    infix fun List<Pair<Int, Int>>.takeFirstsBy(
        condition: (Pair<Int, Int>) -> Boolean
    ): List<Int> {
        return this.filter(condition).map { it.first }
    }

    // 使用示例
    val pairs = listOf(1 to 4, 2 to 3, 3 to 3, 0 to 5, 5 to 0)
    val result = pairs takeFirstsBy { it.first + it.second == 5 }
    println(result) // 输出: [1, 2, 0, 5]
}

关键点说明

  • infix关键字让函数支持中缀表达式调用(pairs takeFirstsBy { ... }),比普通的点调用写法更简洁。
  • condition参数是一个lambda表达式,调用时可以传入任意针对Pair<Int, Int>的判断逻辑,不局限于两数之和为5的场景。
  • filter(condition)保留所有满足条件的Pair,map { it.first }将这些Pair转换为它们的第一个元素组成的列表。

内容的提问来源于stack exchange,提问作者MohammadReza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:15:28