Inline-methoden
Scala 3 inline
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 * 5Inline-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 * 1inline 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 Stringcompiletime.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 nInline-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 = MaxRetriesPrestaties 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 defwordt uitgebreid op de aanroepplekinline-parameters en constantevouweninline if/inline matchtransparent inline,inline val,compiletime.error
Volgende: de basis van macro's.
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
- Inline-methoden
- De basis van macro's
- Quotes en splices
- Praktische macro's