Inline-metoder
Scala 3 inline
Inline-metoder er en gratis leksjon i Scala for backendutvikling og funksjonell programmering på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Scala for backendutvikling og funksjonell programmering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Scala for backendutvikling og funksjonell programmering inneholder totalt 4 leksjoner.
Hva er inline?
Nøkkelordet inline i Scala 3 forteller kompilatoren at en definisjon skal utvides på kallstedet under kompileringen. Det er inngangen til metaprogrammering, før fullverdige makroer.
En inline-metode
Merk en metode med inline, så settes metodens kropp inn overalt der den kalles. Dette kan fjerne kallkostnader og muliggjøre spesialisering under kompilering.
inline def square(x: Int): Int = x * x
val r = square(5) // compiles to 5 * 5Inline-parametere
En inline-parameter tvinger også argumentet til å bli inline. Hvis argumentet er en konstant, kan kompilatoren folde det inn som en literal.
inline def power(x: Int, inline n: Int): Int =
if (n == 0) 1 else x * power(x, n - 1)Konstantfolding
Når inline-parametere er literaler, kan grener og rekursjon løses fullstendig under kompileringen, slik at bare det endelige uttrykket blir igjen i bytekoden.
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 og inline match
Inne i en inline-metode løses inline if og inline match under kompileringen når uttrykket det testes mot, er statisk kjent. Da fjernes ubrukte grener.
inline def label(inline b: Boolean): String =
inline if (b) "yes" else "no"Transparent inline
transparent inline lar metodens returtype spesialiseres per kallsted — kompilatoren kan utlede en mer spesifikk type enn den deklarerte.
transparent inline def first(inline b: Boolean): Any =
inline if (b) 1 else "x" // type can be Int or Stringcompiletime.error
Pakken scala.compiletime tilbyr verktøy som error for å avbryte kompileringen med en egendefinert melding — nyttig for validering av inline-argumenter.
import scala.compiletime.error
inline def positive(inline n: Int): Int =
inline if (n <= 0) error("n must be positive") else nInline-verdier
En inline val er en ekte konstant kjent under kompileringen. Den kan brukes der det kreves literaler, for eksempel i andre inline-beregninger.
inline val MaxRetries = 3
inline def retries: Int = MaxRetriesYtelse kontra kodestørrelse
Inlining bytter kodestørrelse mot hastighet og garantier ved kompilering. Overdreven bruk på store metodekropper blåser opp bytekoden, så reserver det for små, hyppig brukte eller spesialiseringskritiske metoder.
Kjørbar uten inline
Her er den samme kvadreringslogikken som et vanlig, selvstendig program. Inline-versjonen ville produsert identiske resultater, med multiplikasjonen utvidet på kallstedet.
object Main {
def square(x: Int): Int = x * x
def main(args: Array[String]): Unit = {
println(square(5)) // 25
}
}Inline er grunnlaget
Makroer bygger på inline-metoder: en inline def kan kalle en makro for å generere kode. Når du først behersker inline, blir makrolaget mye enklere.
Rask kontroll
Hva endres når du legger til transparent i en inline-metode?
Oppsummering
Du har lært om inlining i Scala 3:
inline defutvides på kallstedetinline-parametere og konstantfoldinginline if/inline matchtransparent inline,inline val,compiletime.error
Neste: grunnleggende makroer.
Lær deg Scala med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 39
- Leksjoner
- 143
Ofte stilte spørsmål
Er leksjonen «Inline-metoder» gratis?
Ja – hele teksten i «Inline-metoder» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Scala for backendutvikling og funksjonell programmering-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Scala for backendutvikling og funksjonell programmering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Inline-metoder»?
Scala 3 inline Du øver på Scala for backendutvikling og funksjonell programmering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Scala for backendutvikling og funksjonell programmering?
Ingen tidligere erfaring er nødvendig. Scala for backendutvikling og funksjonell programmering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Inline-metoder»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Scala for backendutvikling og funksjonell programmering-leksjonen?
Ja. Alle Scala for backendutvikling og funksjonell programmering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Inline-metoder
- Grunnleggende makroer
- Quotes og splices
- Praktiske makroer