我是 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 给了我:
  • unresolved reference: A
  • unresolved reference: B
  • unresolved reference: c

  • hey look at here 行。

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

    最佳答案

    您遇到了一个非常罕见的句法歧义案例。我认为这是第一次,恭喜!

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

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

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

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

    关于intellij-idea - Kotlin 意外 `unresolved reference`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44354465/

    10-10 17:23