我有非常通用的用例。我有一个返回 Int 的方法 conditionMethod
def conditionMethod(..):Int = {..}
现在我有使用相同方法的 if 条件
if (conditionMethod(..) > 0){
conditionMethod(..) + 23 // Any action
}
问题是它调用方法conditionMethod两次。为了解决这个问题,另一种方法是
val tmp = conditionMethod(..)
if (tmp > 0){
tmp + 23 // Any action
}
我不喜欢的是我必须定义一个更大范围的变量。
我可以做类似的事情吗
if ((val tmp = conditionMethod(..)) > 0){ // tmp variable in if condition itself
tmp + 23 // Any action
}
Scala 版本:2.11
最佳答案
您可以保持范围非常狭窄:
val result = {
val tmp = methodCall()
if (tmp>0) tmp else tmp+23
}
或者使用匹配
methodCall() match {
case x if x <= 0 => x + 23
case x => x
}
关于Scala:在 if 条件中声明 val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54341680/