在 Scala 中,如何在 `if 块` 中定义 `val`?
In Scala, how to define a `val` in a `if block`?
我的 Scala 代码如下所示
if (true) {
val a = 1
}
else {
val a = 2
}
print(a)
print(a+100)
print(a)
将抛出错误,因为 a
在评估该行时超出范围..那么我如何根据条件表达式定义 val
?有人对此有想法吗?
在scala
中if
是表达式-它的returns值。因此,您可以将此值分配给 val
:
val a =
if (true) {
1
} else {
2
}
// for simple expressions:
val a2 = if (true) 1 else 2
print(a)
print(a+100)
值得注意的是,这个习语也可以扩展到利用解构赋值来声明和设置多个变量:
val (a, b) =
if (true) {
(1, 5)
} else {
(2, 10)
}
print(a)
print(b)
以上可以进一步扩展到 match
语句和解包任何可以 unapply
的东西。
我的 Scala 代码如下所示
if (true) {
val a = 1
}
else {
val a = 2
}
print(a)
print(a+100)
print(a)
将抛出错误,因为 a
在评估该行时超出范围..那么我如何根据条件表达式定义 val
?有人对此有想法吗?
在scala
中if
是表达式-它的returns值。因此,您可以将此值分配给 val
:
val a =
if (true) {
1
} else {
2
}
// for simple expressions:
val a2 = if (true) 1 else 2
print(a)
print(a+100)
值得注意的是,这个习语也可以扩展到利用解构赋值来声明和设置多个变量:
val (a, b) =
if (true) {
(1, 5)
} else {
(2, 10)
}
print(a)
print(b)
以上可以进一步扩展到 match
语句和解包任何可以 unapply
的东西。