Reputation: 44051
var exit: String = expensiveOperation
if (exit.contains(...)) exit = somethingElse
The key is I only wish to call
expensiveOperation
once since it consumes many clock cycles
Upvotes: 5
Views: 1588
Reputation: 67848
If you don’t want to expose the other val
, do it inline:
val exit = {
val result = expensiveOperation
if (result.contains(...)) somethingElse
else result
}
or, if you like
val exit = expensiveOperation match {
case res if res.contains(...) => somethingElse
case res if res.contains(...) => somethingBetter
// ...
case res => res
}
Upvotes: 10
Reputation: 47052
One possible solution: extract a method.
def exitValue(...): String = {
val exit: String = expensiveOperation
if (exit.contains(...)) somethingElse else exit
}
val exit = exitValue(...)
Upvotes: 0
Reputation: 5763
a silly solution: just introduce another val.
val expected = expensiveOperation
val exit = if(expected.contains(...)) expected else something else
Upvotes: 8