我有一些与此类似的结构的代码:
private fun test() : Double {
val a : Double? = 15.0
val b : Double? = 20.0
return if (a == null && b == null) {
0
} else if (a != null && b == null) {
a
} else if (a == null && b != null) {
b
} else {
a+b
}
}
根据我的理解,聪明的演员应该在最后的“其他”中推断出。声明,a和b都不能为空,但它似乎并不能推断出这会导致错误。
是否有正当理由认为智能播放不会像我期望的那样工作,或者它不像我想的那样聪明?
答案 0 :(得分:1)
它并不像你想象的那么聪明。
IntelliJ IDEA的问题跟踪系统中存在大量智能投射相关问题。例如https://youtrack.jetbrains.com/issue/KT-6822这是https://youtrack.jetbrains.com/issue/KT-2454的子任务,列出了其他可能相关的问题。我会仔细研究这些问题,看看你的问题是否已被跟踪,如果没有,请为此创建一个,看看它是什么。