`def` vs `val` vs `paresseux val d'évaluation en Scala

Suis-je en droit de comprendre que

  • def est évalué à chaque fois qu'il devient accessible
  • lazy val est évaluée une fois qu'il est accessible
  • val est évaluée une fois qu'il pénètre dans l'étendue d'exécution?
Voir stackoverflow.com/questions/4437373/...
Aussi stackoverflow.com/questions/13126104/...
Notez que val n'a pas pu être librement étendu. Si vous avez val a = 5, val b = a + 1 dans la base de trait et d'essayer de l'étendre à d' val a = 6 alors au lieu de 7 b serait de jeter quelques notdefined erreur.

OriginalL'auteur Ivan | 2012-02-26