変更可能な変数をできるだけ避けようとしていますが、時にはそれが難しすぎると感じることがあり、非常に複雑なコードで終わりたくありません
それにもかかわらず、私はそれを行うためにこの方法を見つけましたが、それは確かに不正行為のように感じます
クエリを解析していて、field!value が見つかったので、それを field:<>value に変換してから処理を続けたいので、ミュータブルを避けるために、または少なくとも彼らは閉じ込められた...
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)
}
これは正しい方法ですか?または、この種のことを達成するためのより慣用的な(そして明確な!)方法はありますか?