Method Inline
inline di Scala 3.
Method Inline adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.
Apa Itu inline?
Kata kunci inline dalam Scala 3 memberi tahu kompiler untuk memperluas definisi di lokasi pemanggilan selama kompilasi. Ini merupakan pintu masuk ke metapemrograman, sebelum makro lengkap.
Metode Inline
Tandai metode dengan inline, lalu isi badannya akan disubstitusikan di setiap tempat metode tersebut dipanggil. Ini dapat menghilangkan biaya pemanggilan dan memungkinkan spesialisasi saat kompilasi.
inline def square(x: Int): Int = x * x
val r = square(5) // compiles to 5 * 5Parameter Inline
Parameter inline memaksa argumennya untuk turut di-inline. Jika argumennya berupa konstanta, kompiler dapat melipatnya menjadi literal.
inline def power(x: Int, inline n: Int): Int =
if (n == 0) 1 else x * power(x, n - 1)Pelipatan Konstanta
Ketika parameter inline berupa literal, percabangan dan rekursi dapat diselesaikan sepenuhnya saat kompilasi, sehingga hanya ekspresi akhir yang tersisa dalam 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 * 1inline if dan inline match
Di dalam metode inline, inline if dan inline match diselesaikan saat kompilasi ketika nilai yang diperiksa diketahui secara statis, sehingga percabangan yang tidak digunakan dihilangkan.
inline def label(inline b: Boolean): String =
inline if (b) "yes" else "no"Inline Transparan
transparent inline memungkinkan tipe pengembalian metode diperinci untuk setiap lokasi pemanggilan — kompiler dapat menyimpulkan tipe yang lebih spesifik daripada tipe yang dideklarasikan.
transparent inline def first(inline b: Boolean): Any =
inline if (b) 1 else "x" // type can be Int or Stringcompiletime.error
Paket scala.compiletime menyediakan alat seperti error untuk menggagalkan kompilasi dengan pesan khusus — berguna untuk memvalidasi argumen inline.
import scala.compiletime.error
inline def positive(inline n: Int): Int =
inline if (n <= 0) error("n must be positive") else nNilai Inline
inline val adalah konstanta waktu kompilasi yang sebenarnya. Nilai ini dapat digunakan di tempat yang memerlukan literal, misalnya dalam perhitungan inline lainnya.
inline val MaxRetries = 3
inline def retries: Int = MaxRetriesKinerja vs Ukuran Kode
Inlining menukar ukuran kode dengan kecepatan dan jaminan waktu kompilasi. Penggunaan berlebihan pada badan yang besar akan memperbesar bytecode, jadi gunakan untuk metode yang kecil, sering dijalankan, atau sangat membutuhkan spesialisasi.
Dapat Dijalankan Tanpa Inline
Berikut logika pengkuadratan yang sama sebagai program mandiri biasa. Versi inline akan menghasilkan hasil yang identik dengan perkalian yang diperluas di lokasi pemanggilan.
object Main {
def square(x: Int): Int = x * x
def main(args: Array[String]): Unit = {
println(square(5)) // 25
}
}Inline Adalah Fondasinya
Makro dibangun di atas metode inline: inline def dapat memanggil makro untuk menghasilkan kode. Menguasai inline terlebih dahulu akan membuat lapisan makro jauh lebih mudah dipahami.
Pemeriksaan Singkat
Apa perubahan yang terjadi jika Anda menambahkan transparent ke metode inline?
Rangkuman
Anda telah mempelajari inlining Scala 3:
inline defdiperluas di lokasi pemanggilan- parameter
inlinedan pelipatan konstanta inline if/inline matchtransparent inline,inline val,compiletime.error
Berikutnya: dasar-dasar makro.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Method Inline” gratis?
Ya — teks lengkap “Method Inline” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Method Inline”?
inline di Scala 3. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?
Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Method Inline” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?
Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Method Inline
- Dasar-Dasar Makro
- Quote dan Splice
- Makro Praktis