[英]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.