Cakupan dan Blok
Termasuk bagian Dasar-Dasar dalam perjalanan Lua di Coddy. Pelajaran 86 dari 90.
Di Lua, kamu bisa membuat scope baru di mana saja dalam kodemu menggunakan blok do...end. Blok ini memungkinkanmu mengatur dengan tepat di mana variabel lokalmu bisa diakses, sehingga kamu memiliki kendali yang tepat atas scope variabel.
Berikut cara membuat scope baru dengan blok do...end:
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- Ini berhasil
print(innerVar) -- Ini juga berhasil
end
print(outerVar) -- Ini berhasil
print(innerVar) -- Ini akan menyebabkan error!Hal menarik dari scope adalah kamu bisa memiliki variabel lokal dengan nama yang sama di blok yang berbeda, dan variabel tersebut tetap sepenuhnya terpisah:
local name = "Alice"
do
local name = "Bob" -- Variabel yang berbeda!
print(name) -- Mencetak "Bob"
end
print(name) -- Mencetak "Alice"Setiap blok do...end membuat lingkungan terisolasi sendiri untuk variabel lokal. Variabel yang dideklarasikan di dalam blok tidak dapat keluar ke cakupan luar, sedangkan variabel dari cakupan luar dapat diakses dari dalam blok yang lebih dalam.
Tantangan
MudahBuat blok do...end bersarang untuk menunjukkan bahwa variabel lokal dengan nama yang sama tetap sepenuhnya terpisah dalam cakupan yang berbeda.
Pertama, buat variabel lokal bernama playerLevel dengan nilai 10 dalam cakupan luar, lalu cetak nilainya.
Kemudian buat blok do...end dan di dalamnya:
- Deklarasikan variabel lokal baru yang juga bernama
playerLeveldengan nilai25 - Cetak
playerLevelbagian dalam ini
Setelah blok bagian dalam berakhir, cetak kembali playerLevel bagian luar untuk menunjukkan bahwa nilainya tetap tidak berubah.
Ini menunjukkan bahwa variabel lokal dengan nama yang sama dalam cakupan berbeda sepenuhnya terpisah. Variabel bagian dalam tidak memengaruhi variabel bagian luar.
Coba sendiri
-- TODO: Tulis kodemu di siniPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator 2: Relasional dan Logika
Operator KesetaraanOperator RelasionalOperator 'and'Operator 'or'Operator 'not'Evaluasi Hubung SingkatNilai Truthy dan FalsyRangkuman: Logika Sederhana7Logika Percabangan Dasar
Pernyataan if-thenPernyataan if-then-elsePernyataan elseifRangkuman: Peti Harta Karun10Tabel Bagian 1: Gaya list
Apa itu Tabel?Membuat TabelMengakses Elemen berdasarkan IndeksMengubah Elemen berdasarkan IndeksOperator Panjang '#'table.insert()table.remove()Ringkasan: Kelola Anggota Pesta13Proyek: Toko Ramuan Sederhana
Menyiapkan ProyekMenambahkan Ramuan2Variabel dan Tipe Data
Apa Itu Variabel?AngkastringBooleanNilai 'nil'Fungsi type()Konvensi PenamaanUlasan: Profil Karakter5Output Dasar
Mencetak Nilai LiteralMencetak VariabelMencetak Beberapa NilaiMenggabungkan string dan VariabelFungsi tostring()inputKonversi TipeRangkuman: Laporan StatusRangkuman: Sampai 1208Dasar Manipulasi string
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Rangkuman: Format Nama Pengguna11Tabel 2: Bergaya Dictionary
Pasangan Key-ValueMembuat Tabel Bergaya DictionaryMengakses dengan Notasi Kurung SikuMengakses dengan Notasi TitikMenambahkan dan Mengubah PasanganMenghapus Pasangan dengan nilUlasan: Property Item14Cakupan Variabel
Variabel GlobalVariabel LokalMengapa Menggunakan Variabel Lokal?Cakupan dan BlokRangkuman: Teka-teki Cakupan3Operator 1 Aritmetika & Penggabungan
Operator AritmetikaOperator ModuloOperator PemangkatanPenggabungan stringPrioritas OperatorRingkasan: Perhitungan Sederhana6Proyek: Menampilkan Statistik Karakter
Pesan SambutanDeklarasikan Statistik Karakter9Dasar-Dasar Fungsi
Mendeklarasikan FungsiMemanggil FungsiFungsi dengan ParameterFungsi dengan Beberapa ParameterPernyataan 'return'Rekap: Kalkulator LuasLatihan sendiri: Compiler Lua online