我正在努力理解这个答案:https://stackoverflow.com/a/44180583/481061,特别是这一部分:

如果语句的第一行是有效语句,则它将不起作用:

val text = "This " + "is " + "a "
         + "long " + "long " + "line" // syntax error

这似乎不是点运算符的情况:

val text = obj
           .getString()

这是怎么回事?我正在看语法(https://kotlinlang.org/docs/reference/grammar.html),但不确定要看什么才能理解其中的区别.它是在语法规则之外嵌入到语言中的,还是一条语法规则?

推荐答案

这是一个语法规则,但我看到的是一个不完整的语法.

在完整的语法https://github.com/Kotlin/kotlin-spec/blob/release/grammar/src/main/antlr/KotlinParser.g4中,它在memberAccessOperatoridentifier的规则中已经很清楚了.

除了在单独定义的带括号的上下文中,DOT的前面总是可以跟NL*,而其他运算符则不能.

Kotlin相关问答推荐

当通过firstOrders访问时,存储在伴随对象中的对象列表具有空值

如何为集成测试配置Gradle JVM测试套件?

在Spring Boot应用程序中使用网络请求功能将关键字挂起作为冗余

有什么方法可以要求在 kotlin 中的类型参数上进行注释?

通用接口继承

如何使用 Either monad 并避免嵌套 flatMap

从字符串列表构建字符串

interface扩展

参考 Kotlin 中的 Java 接口静态字段

Kotlin 具体化的泛型不会按计划保持类型

kotlin-bom 库是做什么的?

RecyclerView SnapHelper无法显示第一个/最后一个元素

Kotlin reflect proguard SmallSortedMap

无法解决:androidx.lifecycle:lifecycle-extensions-ktx:2.0.0-alpha1

如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?

在多平台子元素中使用kapt

比较Kotlin的NaN

Kotlin 是否支持部分应用程序?

带有注释为@RegisterExtension的字段的 JUnit 5 测试在 Kotlin 中不起作用

在 intelliJ 元素中集成 Kotlinx 协程