为什么加号需要位于行尾而不是下一行的开头?

Jer*_*Orr 5 kotlin

在 Kotlin 中,如果您希望加法表达式跨越多行,则需要将加号放在行尾,而不是行首。例如:

var a = 1
var b = 2
var c = 3

var d = a +
    b +
    c

println(d) // prints "6"

var e = a
    + b
    + c

println(e) // prints "1"
Run Code Online (Sandbox Code Playgroud)

据我所知,这是因为 Kotlin 将第二个示例解释为三个单独的语句,如下所示:

var e = a
+ b
+ c
Run Code Online (Sandbox Code Playgroud)

但我还没有找到任何文档来说明为什么+ somevariable它本身就是一个有效的陈述。它不会增加变量,并println(+somevariable)打印与 相同的值println(somevariable)

Lap*_*try 3

我相信线条

\n
val a = 5\n+ 6\n
Run Code Online (Sandbox Code Playgroud)\n

被解析为两个语句:

\n
    \n
  1. var用表达式的值定义一个5
  2. \n
  3. 表达式+6,带有一元加号。
  4. \n
\n

我在 Scala 和 Groovy 语言中也遇到了同样的问题。\n发生这种情况是因为行尾被视为语句结尾 \xe2\x80\x94 在 Java 中仅;被视为语句结尾,因此您可以将其放在+任何您喜欢的位置。

\n

  • 您可以编写一个执行副作用的“unaryPlus”函数。在这种情况下,只执行 `+obj` 就会有效果。当然,“Int”上的“unaryPlus”函数不会执行此操作,但它们不会使这种特殊情况无法编译。 (2认同)