0Pricing
Lua Academy · Pelajaran

Komposisi Mixin dan Pemeriksaan Interface

Campurkan beberapa tabel perilaku dan validasi kesesuaian interface.

Komposisi Mixin dan Pemeriksaan Interface adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Apa Itu Campuran?

Campuran adalah tabel berisi metode yang disalin ke dalam kelas. Campuran menyediakan perilaku tanpa memerlukan hubungan pewarisan — sangat cocok untuk kebutuhan lintas fungsi.

Penerapan Campuran Sederhana

Salin metode dari tabel campuran ke dalam kelas target.

local Serializable = {
  serialize = function(self)
    local parts = {}
    for k, v in pairs(self) do
      parts[#parts+1] = k .. "=" .. tostring(v)
    end
    return "{" .. table.concat(parts, ", ") .. "}"
  end
}
local function mixin(cls, ...)
  for _, m in ipairs({...}) do
    for k, v in pairs(m) do
      if cls[k] == nil then cls[k] = v end
    end
  end
end
mixin(Animal, Serializable)
print(cat:serialize())

Menimpa vs Tanpa Penimpaan

Tentukan apakah mixin harus menimpa metode yang sudah ada. Contoh di atas menggunakan if cls[k] == nil untuk mencegah penimpaan. Hapus pemeriksaan tersebut agar penimpaan diizinkan.

Beberapa Mixin

Terapkan beberapa mixin pada satu kelas untuk menggabungkan perilaku dari berbagai sumber.

local Printable = { print = function(self) print(tostring(self)) end }
local Comparable = { eq = function(self, other) return self.id == other.id end }
mixin(User, Serializable, Printable, Comparable)

Definisi Antarmuka

Antarmuka adalah tabel yang mencantumkan nama metode yang diwajibkan. Gunakan antarmuka untuk mendokumentasikan kontrak yang harus dipenuhi sebuah kelas.

local IAnimal = {
  "speak",
  "move",
  "eat",
}

Fungsi Pemeriksaan Antarmuka

Verifikasi bahwa sebuah kelas menerapkan semua metode dalam suatu antarmuka.

local function implements(cls, interface)
  for _, method in ipairs(interface) do
    if type(cls[method]) ~= "function" then
      return false, "Missing method: " .. method
    end
  end
  return true
end
local ok, err = implements(Dog, IAnimal)
print(ok, err)

Penerapan Antarmuka yang Ketat

Panggil implements saat definisi kelas (atau pemuatan modul) untuk menemukan metode yang hilang sejak awal.

assert(implements(Dog, IAnimal))

Pengetikan Bebek vs Pemeriksaan Antarmuka

Lua secara alami menggunakan pengetikan bebek (jika objek memiliki metode tersebut, gunakan objek itu). Pemeriksaan antarmuka eksplisit menambah keamanan untuk tim besar dan API publik.

Mixin dengan Status

Mixin umumnya harus tidak menyimpan status (hanya metode). Mixin yang memiliki status dapat menyebabkan konflik jika beberapa mixin menggunakan nama bidang yang sama.

Penerapan Mixin Berurutan

Jika dua mixin mendefinisikan metode yang sama, mixin yang diterapkan terakhir akan menang. Atur urutannya secara sengaja agar perilaku dapat diprediksi.

Keputusan antara Mixin dan Pewarisan

Gunakan pewarisan untuk hubungan "adalah" yang kuat. Gunakan mixin untuk perilaku lintas fungsi yang dapat digunakan ulang (pencatatan log, serialisasi, kesetaraan).

Pertanyaan tentang Mixin

Apa keunggulan utama mixin dibandingkan pewarisan?

Ringkasan: Mixin dan Antarmuka

Mixin menyalin metode ke dalam kelas untuk menyediakan perilaku lintas fungsi. Antarmuka mendokumentasikan metode yang diwajibkan dan dapat diperiksa saat pemuatan. Bersama-sama, keduanya memungkinkan komposisi fleksibel di luar pewarisan tunggal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Komposisi Mixin dan Pemeriksaan Interface” gratis?

Ya — teks lengkap “Komposisi Mixin dan Pemeriksaan Interface” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Komposisi Mixin dan Pemeriksaan Interface”?

Campurkan beberapa tabel perilaku dan validasi kesesuaian interface. Kamu berlatih Lua Academy 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 Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy 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 3 dari 4.

Berapa lama pelajaran “Komposisi Mixin dan Pemeriksaan Interface” 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 Lua Academy ini?

Ya. Setiap pelajaran Lua Academy 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

  1. Class Dasar dan Desain Konstruktor
  2. Pewarisan Multi-Tingkat
  3. Komposisi Mixin dan Pemeriksaan Interface
  4. instanceof dan Introspeksi Tipe
← Kembali ke Lua Academy