Kotlin中如何将FloatArray每个元素重置为零?代码报错求解
FloatArray重置元素报错原因及修复方法
错误原因
你在onEachIndexed的lambda里搞错了变量含义:第二个参数value是数组当前遍历到的单个Float元素值,不是数组本身。你试图对一个Float类型的值使用[index]下标赋值,而Float根本没有数组访问的set方法,所以才会抛出“No set method providing array access”错误。
修复方法
方法1:正确使用onEachIndexed操作原数组
忽略不需要的单个元素参数,直接通过索引操作原数组:
values.onEachIndexed { index, _ -> values[index] = 0.0f }
方法2:用forEachIndexed替代(更直观)
如果不需要链式调用返回原数组,用forEachIndexed更合适:
values.forEachIndexed { index, _ -> values[index] = 0.0f }
方法3:使用标准库fill函数(最优解)
Kotlin为数组提供了专门的fill方法,直接填充指定值到整个数组,代码最简洁高效:
values.fill(0.0f)
补充说明
你之前能正常运行的values[1] = 4.0f是直接操作原数组,所以没问题——错误代码的核心就是误把遍历得到的单个元素当成了数组对象来使用。
内容的提问来源于stack exchange,提问作者testivanivan
相关产品推荐
相关产品推荐

