Metody inline
inline w Scali 3
Metody inline to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.
Czym jest inline?
Słowo kluczowe inline w Scali 3 informuje kompilator, aby podczas kompilacji rozwinął definicję w miejscu wywołania. Jest to punkt wyjścia do metaprogramowania, poprzedzający pełne makra.
Metoda inline
Oznacz metodę jako inline, a jej ciało zostanie podstawione wszędzie tam, gdzie jest wywoływana. Może to usunąć narzut wywołania i umożliwić specjalizację podczas kompilacji.
inline def square(x: Int): Int = x * x
val r = square(5) // compiles to 5 * 5Parametry inline
Parametr inline wymusza również rozwinięcie przekazanego argumentu. Jeśli argument jest stałą, kompilator może zwinąć go do literału.
inline def power(x: Int, inline n: Int): Int =
if (n == 0) 1 else x * power(x, n - 1)Zwijanie stałych
Gdy parametry inline są literałami, rozgałęzienia i rekurencję można w pełni rozstrzygnąć podczas kompilacji, pozostawiając w kodzie bajtowym tylko końcowe wyrażenie.
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 i inline match
W metodzie inline wyrażenia inline if i inline match są rozstrzygane podczas kompilacji, gdy analizowana wartość jest znana statycznie, co eliminuje nieużywane gałęzie.
inline def label(inline b: Boolean): String =
inline if (b) "yes" else "no"Transparentne inline
transparent inline pozwala doprecyzować typ zwracany metody w każdym miejscu wywołania — kompilator może wywnioskować typ bardziej szczegółowy niż zadeklarowany.
transparent inline def first(inline b: Boolean): Any =
inline if (b) 1 else "x" // type can be Int or Stringcompiletime.error
Pakiet scala.compiletime udostępnia narzędzia takie jak error, które przerywają kompilację z własnym komunikatem — jest to przydatne do sprawdzania argumentów inline.
import scala.compiletime.error
inline def positive(inline n: Int): Int =
inline if (n <= 0) error("n must be positive") else nWartości inline
inline val jest prawdziwą stałą znaną podczas kompilacji. Można jej używać tam, gdzie wymagane są literały, na przykład w innych obliczeniach inline.
inline val MaxRetries = 3
inline def retries: Int = MaxRetriesWydajność a rozmiar kodu
Rozwijanie kodu zamienia rozmiar kodu na szybkość i gwarancje kompilacji. Nadużywanie go w dużych ciałach metod zwiększa rozmiar kodu bajtowego, dlatego należy rezerwować je dla małych, często wykonywanych metod lub metod wymagających specjalizacji.
Wersja działająca bez inline
Oto ta sama logika podnoszenia do kwadratu w postaci zwykłego, samodzielnego programu. Wersja inline dawałaby identyczne wyniki, rozwijając mnożenie w miejscu wywołania.
object Main {
def square(x: Int): Int = x * x
def main(args: Array[String]): Unit = {
println(square(5)) // 25
}
}Inline jest podstawą
Makra bazują na metodach inline: metoda inline def może wywołać makro w celu wygenerowania kodu. Opanowanie inline w pierwszej kolejności znacznie ułatwia zrozumienie warstwy makr.
Szybkie sprawdzenie
Co zmienia dodanie transparent do metody inline?
Podsumowanie
Uczestnik poznał rozwijanie kodu inline w Scali 3:
inline defrozwija się w miejscu wywołania- parametry
inlinei zwijanie stałych inline if/inline matchtransparent inline,inline val,compiletime.error
Następnie: podstawy makr.
Ucz się Scala dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 39
- Lekcje
- 143
Często zadawane pytania
Czy lekcja „Metody inline” jest bezpłatna?
Tak — pełny tekst „Metody inline” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.
Co nauczysz się w „Metody inline”?
inline w Scali 3 Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?
Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Metody inline”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?
Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Metody inline
- Podstawy makr
- Quotes i splices
- Praktyczne makra