Scala voor backend-engineering en functioneel programmeren · Les

Inline-methoden

Scala 3 inline

Les 1 van 413 stappen

Inline-methoden is een gratis Scala voor backend-engineering en functioneel programmeren-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Scala voor backend-engineering en functioneel programmeren. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Scala voor backend-engineering en functioneel programmeren bevat in totaal 4 lessen.

Wat is inline?

Het sleutelwoord inline in Scala 3 vertelt de compiler dat deze tijdens het compileren een definitie moet uitbreiden op de plek waar de definitie wordt aangeroepen. Het is het beginpunt van metaprogrammering, vóór volledige macro's.

Een inline-methode

Markeer een methode met inline; de body ervan wordt vervangen op elke plek waar de methode wordt aangeroepen. Dit kan aanroepprocedure-overhead verwijderen en specialisatie tijdens het compileren mogelijk maken.

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

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

Inline-parameters

Een inline-parameter dwingt af dat ook het argument ervan wordt geïnlined. Als het argument een constante is, kan de compiler dit omzetten in een letterlijke waarde.

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

Constantevouwen

Wanneer inline-parameters letterlijke waarden zijn, kunnen vertakkingen en recursie volledig tijdens het compileren worden opgelost, zodat alleen de uiteindelijke expressie in de bytecode overblijft.

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 en inline match

In een inline-methode worden inline if en inline match tijdens het compileren opgelost wanneer de te onderzoeken waarde statisch bekend is, waardoor dode vertakkingen verdwijnen.

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

Transparante inline

Met transparent inline kan het retourtype van de methode per aanroepplek worden verfijnd — de compiler kan een specifieker type afleiden dan het gedeclareerde type.

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

compiletime.error

Het pakket scala.compiletime biedt hulpmiddelen zoals error om het compileren met een aangepast bericht te laten mislukken — handig om inline-argumenten te valideren.

import scala.compiletime.error

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

Inline-waarden

Een inline val is een echte constante tijdens het compileren. Je kunt deze gebruiken op plaatsen waar letterlijke waarden vereist zijn, bijvoorbeeld in andere inline-berekeningen.

inline val MaxRetries = 3

inline def retries: Int = MaxRetries

Prestaties versus codegrootte

Inlining ruilt codegrootte in voor snelheid en garanties tijdens het compileren. Als je dit toepast op grote bodies, wordt de bytecode onnodig groot. Gebruik het daarom voor kleine, vaak uitgevoerde of voor specialisatie belangrijke methoden.

Uitvoerbaar zonder inline

Hier staat dezelfde logica voor kwadrateren als een gewoon zelfstandig programma. De inline-versie zou identieke resultaten opleveren, waarbij de vermenigvuldiging op de aanroepplek wordt uitgebreid.

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

Inline is de basis

Macro's bouwen voort op inline-methoden: een inline def kan een macro aanroepen om code te genereren. Als je eerst inline beheerst, wordt de macrolaag veel eenvoudiger.

Korte controle

Wat verandert er als je transparent toevoegt aan een inline-methode?

Samenvatting

Je hebt inlining in Scala 3 geleerd:

  • inline def wordt uitgebreid op de aanroepplek
  • inline-parameters en constantevouwen
  • inline if / inline match
  • transparent inline, inline val, compiletime.error

Volgende: de basis van macro's.

Gratis beginnen

Leer Scala met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
39
Lessen
143

Veelgestelde vragen

Is de les “Inline-methoden” gratis?

Ja — de volledige tekst van “Inline-methoden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Scala voor backend-engineering en functioneel programmeren wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Scala voor backend-engineering en functioneel programmeren bevat in totaal 4 lessen.

Wat leer ik in “Inline-methoden”?

Scala 3 inline Je oefent met Scala voor backend-engineering en functioneel programmeren door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Scala voor backend-engineering en functioneel programmeren te beginnen?

Ervaring vooraf is niet nodig. Scala voor backend-engineering en functioneel programmeren op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Inline-methoden”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Scala voor backend-engineering en functioneel programmeren?

Ja. Elke les over Scala voor backend-engineering en functioneel programmeren bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Inline-methoden
  2. De basis van macro's
  3. Quotes en splices
  4. Praktische macro's
← Terug naar Scala voor backend-engineering en functioneel programmeren