Kotlin多类型数组元素比较报错,求更简洁的实现写法
更简洁的写法推荐
首先明确问题根源:你用arrayOf创建的是Array<Any>类型数组,arr[2]的编译类型是Any,因此无法直接和数值进行比较运算。
你当前的写法里,arr[2]?.toString()?.toDouble()!!属于多余操作——因为arr[2]本身就是Double类型,没必要先转字符串再转回数值。推荐两种更简洁的写法:
1. 安全强转(适用于不确定元素类型的场景)
如果不确定数组中该位置是否一定是Double,可以用安全强转+默认值的方式:
if ((arr[2] as? Double ?: 0.0) < 40) { // 你的逻辑 }
as? Double尝试将元素转为Double,失败则返回null?: 0.0在转换失败时提供默认值,确保后续能正常比较
2. 直接强转(适用于确定元素类型的场景)
既然你定义数组时arr[2]明确是12.3(Double类型),完全可以直接强转:
if (arr[2] as Double < 40) { // 你的逻辑 }
这种写法最简洁,且不会有类型转换风险。
内容的提问来源于stack exchange,提问作者MOGI
相关产品推荐
相关产品推荐

