You need to enable JavaScript to run this app. Kotlin中如何将独立定义的匿名函数传递给map()方法
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何将独立定义的匿名函数传递给map()方法

Kotlin 匿名函数提取实现方案

直接在nest函数内定义匿名函数

因为映射逻辑依赖函数的泛型参数R和入参repeat,直接在nest内部定义变量即可:

fun <R> nest(list: List<R>, repeat: Int) {
    // 显式声明匿名函数的写法
    val anonFunction: (R) -> List<R> = fun(mem: R): List<R> {
        return generateSequence(1) { it }
            .map { mem }
            .take(repeat)
            .toList()
    }
    return list.map(anonFunction)
}

如果不需要显式使用fun关键字声明匿名函数,也可以直接写lambda表达式,效果完全一致:

fun <R> nest(list: List<R>, repeat: Int) {
    val anonFunction: (R) -> List<R> = { mem ->
        generateSequence(1) { it }
            .map { mem }
            .take(repeat)
            .toList()
    }
    return list.map(anonFunction)
}

更简洁的优化实现

你原来的generateSequence写法可以直接替换为Kotlin标准库的List构造函数,逻辑等价且性能更优:

fun <R> nest(list: List<R>, repeat: Int) {
    val anonFunction: (R) -> List<R> = { mem -> List(repeat) { mem } }
    return list.map(anonFunction)
}

提取为全局可复用函数

如果你需要把这段映射逻辑提取到nest函数外复用,可以封装为泛型高阶函数:

// 全局定义的映射函数生成器
fun <R> buildNestMapper(repeat: Int): (R) -> List<R> = { mem ->
    List(repeat) { mem }
}

// 调用方直接传入生成的映射函数
fun <R> nest(list: List<R>, repeat: Int) = list.map(buildNestMapper(repeat))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:03:00