Scala for Backend Engineering & Functional Programming · Leçon

val et var

Liaisons immuables et mutables.

Leçon 1 sur 413 étapes

val et var est une leçon Scala for Backend Engineering & Functional Programming gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Scala for Backend Engineering & Functional Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Scala for Backend Engineering & Functional Programming comprend 4 leçons au total.

Deux façons de nommer des valeurs

En Scala, vous associez un nom à une valeur avec val ou var.

val crée une liaison immuable : une fois affectée, elle ne peut plus pointer vers une autre valeur. var crée une liaison modifiable que vous pouvez réaffecter ultérieurement.

Choisir entre les deux est l’une des premières habitudes que développe un ingénieur backend Scala.

val name = "Ada"
var score = 10

Définir une val

Une val est en lecture seule. Vous lui attribuez une valeur une seule fois, et le compilateur garantit qu’elle restera inchangée.

Votre code est ainsi plus facile à comprendre : une val ne vous surprend jamais par une valeur modifiée ailleurs.

object Main extends App {
  val pi = 3.14
  println(pi)
}

La réaffectation d’une val échoue

Essayer de réaffecter une val provoque une erreur de compilation, et non un plantage à l’exécution. Le compilateur vous arrête avant même que le programme ne s’exécute.

L’extrait ci-dessous échouerait avec reassignment to val.

val country = "Turkey"
country = "Spain" // error: reassignment to val

Définir une var

Une var peut être réaffectée autant de fois que vous le souhaitez, tant que la nouvelle valeur possède un type compatible.

Utilisez var lorsqu’une valeur doit réellement changer au fil du temps, par exemple un compteur dans une boucle.

object Main extends App {
  var count = 0
  count = count + 1
  count = count + 1
  println(count)
}

var conserve son type

Bien qu'un var puisse être réaffecté, son type est fixé au moment de sa définition.

Si level commence comme un Int, vous ne pouvez pas ensuite y stocker une String. Le compilateur rejette cette incompatibilité.

var level = 1
level = 5        // ok, still an Int
level = "high"  // error: type mismatch

Préférer val par défaut

En Scala idiomatique, val est privilégié presque partout. L'immutabilité évite de nombreuses catégories de bogues et rend le code concurrent plus sûr.

  • Commencez par utiliser val.
  • Passez à var uniquement lorsque vous avez réellement besoin de modifier la valeur.

Réécrire var en val

De nombreuses boucles qui semblent nécessiter un var peuvent être exprimées avec un val et une expression.

Ici, une somme est calculée avec une plage et sum, sans modification nécessaire.

object Main extends App {
  val total = (1 to 5).sum
  println(total)
}

Portée d'une liaison

val et var existent tous deux à l'intérieur du bloc { ... } où ils sont définis.

Une liaison déclarée dans un bloc n'est pas visible à l'extérieur de celui-ci. Cela permet de garder les noms organisés et d'éviter leur réutilisation accidentelle.

object Main extends App {
  val outer = 1
  {
    val inner = 2
    println(outer + inner)
  }
  // inner is not visible here
}

val paresseux

Un lazy val n'est calculé que la première fois qu'il est utilisé, puis sa valeur est mise en cache.

C'est pratique pour les valeurs coûteuses à calculer dont vous n'aurez peut-être pas toujours besoin. Le corps est exécuté au plus une fois.

object Main extends App {
  lazy val greeting = { println("computing"); "Hi" }
  println("before")
  println(greeting)
  println(greeting)
}

val avec un type explicite

Vous pouvez annoter le type d'une liaison après deux-points. Cela documente l'intention et peut élargir volontairement le type.

Ici, amount est déclaré comme un Double, même si 10 ressemble à un Int.

val amount: Double = 10
val label: String = "price"

val et var côte à côte

Les deux se comportent de la même manière jusqu'à ce que vous essayiez de réaffecter une valeur.

  • val x : assigné une fois, définitivement fixé.
  • var y : assigné et réassigné librement.

Le programme ci-dessous n'incrémente que le var.

object Main extends App {
  val base = 100
  var bonus = 0
  bonus = bonus + 25
  println(base + bonus)
}

Vérification rapide

Vérifiez votre compréhension de val et var.

Récapitulatif

Vous avez appris les deux façons de lier des noms en Scala.

  • val est immuable et constitue le choix par défaut.
  • var est mutable et réservé aux valeurs qui doivent changer.
  • Réaffecter un val provoque une erreur de compilation.
  • Les types sont fixes dans les deux cas ; lazy val diffère le calcul.
Gratuit pour commencer

Apprends Scala avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
39
Leçons
143

Questions Fréquemment Posées

La leçon « val et var » est-elle gratuite ?

Oui — le texte complet de « val et var » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Scala for Backend Engineering & Functional Programming, passe à CoddyKit PRO. Le cours Scala for Backend Engineering & Functional Programming comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « val et var » ?

Liaisons immuables et mutables. Tu pratiques Scala for Backend Engineering & Functional Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Scala for Backend Engineering & Functional Programming ?

Aucune expérience préalable n'est requise. Scala for Backend Engineering & Functional Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « val et var » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Scala for Backend Engineering & Functional Programming ?

Oui. Chaque leçon Scala for Backend Engineering & Functional Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. val et var
  2. Types et littéraux de base
  3. Inférence de type
  4. Expressions plutôt qu’instructions
← Retour à Scala for Backend Engineering & Functional Programming