Menu
CoddyTech

Masalah yang Diatasi Generics

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 57 dari 73.

Bayangkan kamu membutuhkan fungsi yang hanya mengembalikan nilai apa pun yang kamu berikan kepadanya: fungsi identitas. Dengan tipe yang sudah kamu ketahui sejauh ini, ada dua pilihan, dan keduanya merepotkan.

Pilihan pertama: tulis salinan terpisah untuk setiap tipe. Isi fungsinya sama, hanya anotasinya yang berbeda:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Setiap tipe baru berarti salinan baru, dan bug yang diperbaiki pada satu salinan harus diperbaiki pada semuanya. Duplikasi seperti inilah yang ingin kamu hindari saat menulis fungsi.

Pilihan kedua: gabungkan semuanya menjadi satu fungsi dengan tipe any:

local function echo(value: any): any
    return value
end

Sekarang satu fungsi menangani semuanya, tetapi kamu harus mengorbankan keamanan tipe. Saat kamu memanggil echo("hello"), pemeriksa tidak lagi mengetahui bahwa hasilnya berupa string. Pemeriksa hanya mengetahui any, sehingga pelengkapan otomatis tidak berfungsi dan error tipe luput terdeteksi: hubungan antara nilai yang masuk dan yang keluar hilang.

Yang sebenarnya kamu inginkan adalah fungsi yang bekerja untuk setiap tipe dan mengingat tipe yang digunakan pada setiap pemanggilan. Itulah yang diberikan oleh generik, dan topik itulah yang dibahas dalam bab ini.

Coba sendiri

Pelajaran ini tidak memiliki tantangan kode.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online