0Pricing
Scala for Backend Engineering & Functional Programming · Leçon

Méthodes inline

inline de Scala 3

Méthodes inline 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.

Qu'est-ce que inline ?

Le mot-clé inline de Scala 3 indique au compilateur d'étendre une définition à l'endroit de l'appel lors de la compilation. C'est le point d'entrée de la métaprogrammation, avant les macros complètes.

Une méthode inline

Marquez une méthode avec inline : son corps est alors substitué partout où elle est appelée. Cela peut supprimer le coût de l'appel et permettre une spécialisation à la compilation.

inline def square(x: Int): Int = x * x

val r = square(5) // compiles to 5 * 5

Paramètres inline

Un paramètre inline force également l'intégration de son argument. Si l'argument est une constante, le compilateur peut le convertir en littéral.

inline def power(x: Int, inline n: Int): Int =
  if (n == 0) 1 else x * power(x, n - 1)

Évaluation anticipée des constantes

Lorsque les paramètres inline sont des littéraux, les branches et la récursivité peuvent être entièrement résolues à la compilation, en ne laissant que l'expression finale dans le bytecode.

inline def power(x: Int, inline n: Int): Int =
  if (n == 0) 1 else x * power(x, n - 1)

val c = power(2, 3) // expands to 2 * 2 * 2 * 1

inline if et inline match

Dans une méthode inline, inline if et inline match sont résolus à la compilation lorsque la valeur examinée est connue statiquement, ce qui élimine les branches inutiles.

inline def label(inline b: Boolean): String =
  inline if (b) "yes" else "no"

Inline transparent

transparent inline permet d'affiner le type de retour de la méthode selon l'emplacement de l'appel : le compilateur peut inférer un type plus précis que celui déclaré.

transparent inline def first(inline b: Boolean): Any =
  inline if (b) 1 else "x" // type can be Int or String

compiletime.error

Le paquetage scala.compiletime propose des outils comme error pour interrompre la compilation avec un message personnalisé — pratique pour valider les arguments inline.

import scala.compiletime.error

inline def positive(inline n: Int): Int =
  inline if (n <= 0) error("n must be positive") else n

Valeurs inline

Un inline val est une véritable constante connue à la compilation. Il peut être utilisé là où des littéraux sont requis, par exemple dans d'autres calculs inline.

inline val MaxRetries = 3

inline def retries: Int = MaxRetries

Performances et taille du code

L'intégration du code échange de la taille de code contre de la rapidité et des garanties à la compilation. Si vous l'utilisez trop souvent sur de grands corps de méthodes, le bytecode gonfle ; réservez-la donc aux méthodes petites, très sollicitées ou nécessitant une spécialisation.

Exécutable sans inline

Voici la même logique de mise au carré sous la forme d'un programme autonome ordinaire. La version inline produirait des résultats identiques, la multiplication étant étendue à l'endroit de l'appel.

object Main {
  def square(x: Int): Int = x * x
  def main(args: Array[String]): Unit = {
    println(square(5)) // 25
  }
}

Inline est le fondement

Les macros s'appuient sur les méthodes inline : une définition inline peut appeler une macro pour générer du code. Maîtriser d'abord inline facilite grandement l'apprentissage des macros.

Vérification rapide

Qu'est-ce que l'ajout de transparent à une méthode inline modifie ?

Récapitulatif

Vous avez appris l'intégration du code en Scala 3 :

  • inline def est étendu à l'endroit de l'appel
  • paramètres inline et évaluation anticipée des constantes
  • inline if / inline match
  • transparent inline, inline val, compiletime.error

Ensuite : les bases des macros.

Questions Fréquemment Posées

La leçon « Méthodes inline » est-elle gratuite ?

Oui — le texte complet de « Méthodes inline » 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 « Méthodes inline » ?

inline de Scala 3 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 « Méthodes inline » ?

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. Méthodes inline
  2. Bases des macros
  3. Citations et interpolations
  4. Macros pratiques
← Retour à Scala for Backend Engineering & Functional Programming