deltanovember
deltanovember

Reputation: 44051

How do I convert the following var Scala code into vals?

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

Answers (3)

Debilski
Debilski

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

dave4420
dave4420

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

jilen
jilen

Reputation: 5763

a silly solution: just introduce another val.

   val expected = expensiveOperation 
   val exit = if(expected.contains(...)) expected else something else

Upvotes: 8

Related Questions