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

Jetpack Compose中调用Map.forEach编译提示需写扩展函数原因问询

错误根本原因

你调用forEach的位置处于LazyColumn的DSL作用域(也就是LazyListScope的作用域)内,LazyListScope本身自带一个单参数的forEach扩展方法,编译器会优先匹配作用域内的这个方法,而不是Kotlin标准库中Map的双参数forEach,所以会报「期望2个参数但只找到1个」「缺少component2()函数」的解构错误。

之前能正常运行的常见原因:要么是你之前使用的Compose版本还未在LazyListScope中引入同名的forEach方法,要么是Android Studio之前的索引缓存异常,重启后索引刷新才识别到作用域内的方法冲突。

解决方案

最简单的修复方式是显式遍历Map的Entry集合,避开方法名冲突,把代码中grouped.forEach修改为grouped.entries.forEach即可:

LazyColumn {
    grouped.entries.forEach { (initial, plantsForInitial) ->
        stickyHeader {
            CharacterHeader(initial)
        }
        items(plantsForInitial) { plant ->
            PlantListItem(plant)
        }
    }
}

额外注意

你定义的PlantList数据类存在语法错误,List需要指定泛型参数,正确写法参考:

data class PlantList(var plants: List<Plant>)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 05:30:01