今天我在 Kotlin 中遇到了一个我无法解释的奇怪行为。给出以下代码:
data class Data(
val v1: Int,
val v2: Int,
val v3: Int)
fun main() {
val d = Data(1,1,1)
val sum1 = d.v1 + d.v2 + d.v3
println("Oneliner: $sum1") // prints: Oneliner: 3
val sum2 = d.v1
+ d.v2
+ d.v3
println("OperatorFirst: $sum2") // prints: OperatorFirst: 1
val sum3 = d.v1 +
d.v2 +
d.v3
println("OperatorLast: $sum3") // prints: OperatorLast: 3
}
Run Code Online (Sandbox Code Playgroud)
(可测试: https: //pl.kotl.in/gMjif_6FO)
现在似乎取决于您将+运算符放置在哪里才能获得 3 的正确结果。但是,IDE 没有显示第二个版本可能有任何问题,而且我找不到任何关于为什么这种情况会出现这种情况的信息不同。
关于软件工程空间的一个问题还说,一些编码指南建议将运算符放在行的开头:https://softwareengineering.stackexchange.com/questions/93670/line-break-before-after-operator
另外,我能找到的对此行为的唯一解释是+行开头的 …