intellij-idea – Kotlin意外的“未解决的参考”

我是Kotlin的初学者,这是我的代码:

class C(val boy: Int = 0) {
    fun <T, E> boy(i: Int) = i
}

fun girl(b1: Boolean, b2: Boolean) = println("boy($b1, $b2)")

fun main(args: Array<String>): Unit {
    val A = 234 // see? A defined!
    val B = 345 // see? B defined!
    val c = C(123) // c is also defined!

    girl(c.boy < A, B > A) // hey look at here
}

IntelliJ IDEA给了我:

>未解决的参考:A
>未解决的参考文献:B
>未解决的参考:c

嘿,看看这里.

我认为我的代码在语法上是正确的,出了什么问题?

最佳答案
你难以理解一个非常罕见的句法模糊性案例.我认为这是SO的第一个,恭喜!

您的初始语法在技术上是正确的,但在此上下文中,它也可以解释为尝试调用c.boy< A,B>.由于编译器不知道你的意思,它假设你想要函数调用.

最简单的解决方法是添加括号或重新排列表达式:

girl(c.boy < A, A < B)

附:同样的事情可能发生在C#中,所以它并不是Kotlin独有的

转载注明原文:intellij-idea – Kotlin意外的“未解决的参考” - 代码日志