ope*_*sas 1 variables scala immutability
我试图尽可能地避免变量变量,但有时它感觉太难了,我不想以极其复杂的代码结束
不过我找到了这种方式,但它确实感觉像作弊
我正在解析一个查询,我发现找到一个字段!值,我想把它翻译成字段:<>值,然后继续处理,所以我出来了这段代码以避免变异,或者至少有他们被限制......
val (operator, negated) = {
var operator = ConditionOperator.toConditionOperator(parsedOperator)
var negated = parsedNegated == "!"
// field!value => field notEqual value
if (negated && operator == ConditionOperator.Unknown) {
negated = false
operator = ConditionOperator.NotEqual
}
(operator, negated)
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?或者是否有更惯用(和清晰!)的方式来实现这种事情?
这确实是作弊,因为它var
是可变的!
解决这个问题的方法是直接返回if语句的结果:
val (operator, negated) = {
val operator = ConditionOperator.toConditionOperator(parsedOperator)
val negated = parsedNegated == "!"
// field!value => field notEqual value
if (negated && operator == ConditionOperator.Unknown)
(ConditionOperator.NotEqual, false)
else
(operator, negated)
}
Run Code Online (Sandbox Code Playgroud)