簡體   English   中英

Kotlin意外地“未解決的參考”

[英]Kotlin unexpected `unresolved reference`

我是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

我認為我的代碼在語法上是正確的,出了什么問題?

你難以理解一個非常罕見的句法模糊性案例。 我認為這是SO的第一個,恭喜!

您的初始語法在技術上是正確的,但在此上下文中,它也可以解釋為嘗試調用c.boy<A,B> 由於編譯器不知道你的意思,它假設你想要函數調用。

最簡單的解決方法是添加括號或重新排列表達式:

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

PS同樣的事情可能發生在C#中,所以它並不是Kotlin獨有的

嗯..我通過添加一對括號解決了這些錯誤:

fun main(args: Array<String>): Unit {
    val A = 234
    val B = 345
    val c = C(123)

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

但我仍然想知道為什么上面的代碼不起作用

編輯:見其他答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM