Android Studio中Kotlin类型推断失败问题求助
解决Kotlin类型推断失败问题
错误根源
错误出现在rate in 101..120和rate in 121..160这两行(对应你的349、350行)。你的rate是Double类型,但101..120是IntRange(整数范围),Kotlin的in操作符基于泛型实现,编译器无法推断泛型参数T的具体类型——因为输入的Double值和IntRange范围类型不匹配,导致类型推断失败。
修复方案
将整数范围改为Double类型范围,让范围类型和rate的类型完全匹配,编译器就能正常推断类型:
private fun scoreOfRate(rate: Double): Double { return when { rate <= 100 -> (rate / 100) * 50 rate in 101.0..120.0 -> 100.0 rate in 121.0..160.0 -> 100 - (mapValue((rate - 120).toFloat(), 1f, 160f, 0f, 100f).toDouble()) * 1.0 else -> 0.0 } }
同时可以把代码里的1.toFloat()这类写法简化为1f,代码更简洁,功能不受影响。
验证说明
修改后,rate(Double)和101.0..120.0(DoubleRange)类型一致,in操作符的泛型参数能明确为Double,编译器不再出现类型推断错误。你的mapValue函数本身没有问题,错误完全来自范围类型与判断值的类型不匹配。
内容的提问来源于stack exchange,提问作者Amirali Benvidi
相关产品推荐
相关产品推荐

