热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kotlin意外地"未解决的参考"

如何解决《Kotlin意外地"未解决的参考"》经验,为你挑选了1个好方法。

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

class C(val boy: Int = 0) {
    fun  boy(i: Int) = i
}

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

fun main(args: Array): 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) // hey look at here
}

IntelliJ IDEA给了我:

unresolved reference: A

unresolved reference: B

unresolved reference: c

在线hey look at here.

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



1> voddan..:

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

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

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

girl(c.boy 

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


实际上它是Kotlin的一个精彩设计.你还记得你在Java中如何调用泛型方法吗?仿制药在错误的地方`c.男孩(A)`?这是由同样的问题引起的.
推荐阅读
author-avatar
月色清朗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有