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

如何在Kotlin中使用Lambda函数正确初始化Short类型数组?

Kotlin中使用Lambda初始化Short类型数组的正确方式

你遇到的错误是因为Lambda参数n默认是Int类型,n*2的计算结果也是Int,而Array<Short>要求元素为Short类型。Kotlin不允许Int到Short的隐式转换(防止精度丢失),因此必须显式转换类型。

以下是两种常用的正确实现方式:

1. 使用基本类型数组ShortArray(推荐)

ShortArray是专门存储Short基本类型的数组,比Array<Short>(引用类型数组)更高效。初始化时只需将计算结果显式转为Short:

val shortArr3 = ShortArray(10) { n -> (n * 2).toShort() }

2. 使用引用类型数组Array<Short>

如果需要使用Array<Short>,同样要在Lambda中显式转换类型:

val shortArr3: Array<Short> = Array(10) { n -> (n * 2).toShort() }

补充说明:之前用arrayOf(1,2,3)能直接赋值给Array<Short>,是因为这些是编译期常量,编译器可以自动完成安全的类型转换;但Lambda中的计算是运行时动态生成的,必须手动调用toShort()完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:30:03