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 dapat 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) -- Mencetak nil: innerVar hanya ada di dalam blokHal yang hebat dari scope adalah kamu bisa memiliki variabel lokal dengan nama yang sama di blok yang berbeda, dan keduanya tetap sepenuhnya terpisah:
local name = "Alice"
do
local name = "Bob" -- Variabel yang berbeda!
print(name) -- Menampilkan "Bob"
end
print(name) -- Menampilkan "Alice"Setiap blok do...end membuat lingkungan terisolasi sendiri untuk variabel lokal. Variabel yang dideklarasikan di dalam blok tidak dapat keluar ke lingkup luar, sedangkan variabel dari lingkup 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 scope yang berbeda.
Pertama, buat variabel lokal bernama playerLevel dengan nilai 10 di scope luar, lalu cetak nilainya.
Kemudian, buat blok do...end dan di dalamnya:
- Deklarasikan variabel lokal baru yang juga bernama
playerLeveldengan nilai25 - Cetak
playerLevelyang berada di dalam blok ini
Setelah blok dalam berakhir, cetak kembali playerLevel dari scope luar untuk menunjukkan bahwa nilainya tetap tidak berubah.
Ini menunjukkan bahwa variabel lokal dengan nama yang sama di scope berbeda sepenuhnya terpisah. Variabel di dalam tidak memengaruhi variabel di 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 FalsyRingkasan: Logika Sederhana7Logika Percabangan Dasar
Pernyataan if-thenPernyataan if-then-elsePernyataan elseifUlasan: Peti Harta Karun10Table Bagian 1: Gaya list
Apa Itu Table?Membuat TableMengakses Elemen Berdasarkan IndeksMengubah Elemen Berdasarkan IndeksOperator Panjang '#'table.insert()table.remove()Ulasan: Mengelola Anggota Pesta13Proyek: Toko Ramuan Sederhana
Penyiapan ProyekMenambahkan Ramuan2Variabel dan Tipe Data
Apa Itu Variabel?AngkastringBooleanNilai 'nil'Fungsi type()Konvensi PenamaanRangkuman: Profil Karakter5Output Dasar
Mencetak LiteralMencetak VariabelMencetak Beberapa NilaiMenggabungkan string dan VariabelFungsi tostring()InputKonversi TipeRangkuman: Laporan StatusRangkuman: Hingga 1208Dasar Manipulasi string
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Ulasan, Format Nama Pengguna11Tabel 2: Bergaya Dictionary
Pasangan Kunci-NilaiMembuat 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 OperatorRangkuman: Perhitungan Sederhana6Proyek: Menampilkan Statistik Karakter
Pesan Selamat DatangDeklarasikan Statistik Karakter9Dasar-Dasar Fungsi
Mendeklarasikan FungsiMemanggil FungsiFungsi dengan ParameterFungsi dengan Beberapa ParameterPernyataan 'return'Ulasan: Kalkulator LuasLatihan sendiri: Compiler Lua online