我的Scala代码看起来像这样
if (true) {
val a = 1
}
else {
val a = 2
}
print(a)
print(a+100)
print(a)
会因为a
在评估该行时超出范围而抛出错误。那么如何根据条件表达式定义val
?有没有人有这方面的想法?
答案 0 :(得分:9)
在scala
if
表达式中 - 它返回值。因此,您可以将此值指定给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
'的内容。