Kotlin 为什么加号必须在一行的末尾,而不是下一行的开头?
在Kotlin中,如果希望加法表达式跨越多行,则需要将加号放在行的末尾,而不是开头。例如:Kotlin 为什么加号必须在一行的末尾,而不是下一行的开头?,kotlin,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" 据我所知,这是因为Kotlin将第二个示例解释为三个独立的语句,如下所示: var e = a + b + c 但是我还没有找到任何
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"
据我所知,这是因为Kotlin将第二个示例解释为三个独立的语句,如下所示:
var e = a
+ b
+ c
但是我还没有找到任何文档说明为什么+somevariable
本身就是一个有效的语句。它不增加变量,而且println(+somevariable)
打印的值与println(somevariable)
我相信行
val a = 5
+ 6
解析为两条语句:
var
+6
,带一元加号我在Scala语言中也遇到了同样的问题。这只是因为数学一元运算符(+and-)
+3==3==-3
。检查Kotlin文档中的Int.unaryPlus()
和Int.unaryPlus
,我认为你是对的;我只是不明白为什么一元加号本身是一个有效的语句,它没有分配给变量,没有在方法中使用,也没有从方法返回。我想这只是语言上的一个奇怪现象。你可以编写一个执行副作用的unaryPlus
函数。在这种情况下,只执行+obj
将产生效果。当然,Int
上的unaryPlus
函数不会执行此操作,但它们不会使这个特殊情况不被编译。@marstran更重要的是:如果您查看HTML DSL示例,您会看到文本内容通过+“text Goes Here”
行添加到标记中)