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
相关产品推荐
相关产品推荐

