为什么在这种condition2情况下,行为不是我所期望的?是否有任何链接/参考指定这种行为?
根据我的理解,万一condition2与.map(_ + 1)结合else{},而我期望 .map(_ + 1)与 的结果结合if-else
object Main {
def main(args: Array[String]): Unit = {
val condition: Boolean = true
val a = if (condition) {
Seq(1, 2, 3)
} else {
Seq(1, 2, 3)
}
val b = a.map(_ + 1)
println(b) // Results in List(2, 3, 4)
val condition2: Boolean = true
val c = if (condition2) {
Seq(1, 2, 3)
} else {
Seq(1, 2, 3)
}.map(_ + 1)
println(c) // Results in List(1,2,3), but I expect it to be List(2,3,4)
val condition3: Boolean = false
val d = if (condition3) {
Seq(1, 2, 3)
} else {
Seq(1, 2, 3)
}.map(_ + 1)
println(d) // Results in List(2,3,4)
}
}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的任何帮助。
因为 Scala 编译器将aand binif (cond) a else b构造为单独的表达式,所以在您的情况下aisSeq(1, 2, 3)和bis {Seq(1, 2, 3)}.map(_ + 1)(即后面的所有内容else都是单独的表达式)。您可以将其包含if-else在括号中:
val c = (if (condition2) {
Seq(1, 2, 3)
} else {
Seq(1, 2, 3)
}).map(_ + 1)
Run Code Online (Sandbox Code Playgroud)
它会按预期工作。
另请参阅Scala 2.13 的条件表达式规范。
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |