The Actor trait in Scala is defined like so,
/**
* User overridable definition the strategy to use for supervising
* child actors.
*/
def supervisorStrategy: SupervisorStrategy = SupervisorStrategy.defaultStrategy
However i see that all example code of concrete actors are defined as follows,
override val supervisorStrategy = OneForOneStrategy(loggingEnabled = false) {
    ...
  }
What i am trying to understand is why is the  supervisorStrategy overridden as a val ?
Why not override it as a def?
Is it because of the memory considerations , like we dont want this evaluation every time the method is called ?