0Pricing
Lua Academy · Pelajaran

Mendeklarasikan Variabel di Lua

Pahami variabel global dibandingkan lokal dan konvensi penamaan.

Mendeklarasikan Variabel di Lua adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Variabel Global dan Lokal

Dalam Lua, variabel secara bawaan bersifat global. Menulis x = 10 tanpa kata kunci local akan membuat variabel global yang dapat diakses dari mana saja. Menggunakan local x = 10 membatasi variabel tersebut pada blok saat ini dan blok-blok di dalamnya.

Selalu utamakan local demi kinerja dan keamanan. Mengakses variabel lokal lebih cepat daripada variabel global karena variabel global memerlukan pencarian tabel hash dalam tabel _G.

x = 100          -- global variable
local y = 200    -- local variable

do
  local z = 300  -- block-local
  print(x, y, z) -- 100  200  300
end

print(x, y)      -- 100  200
print(z)         -- nil  (out of scope)

Kata Kunci local

Kata kunci local mendeklarasikan variabel yang lingkupnya berada pada blok terdekat yang membungkusnya: badan fungsi, blok do...end, badan perulangan, atau potongan file. Variabel lokal dibuat pada baris saat dideklarasikan dan tidak lagi ada ketika bloknya berakhir.

Anda dapat mendeklarasikan beberapa variabel lokal dalam satu baris dan menginisialisasinya secara bersamaan. Variabel lokal yang belum diinisialisasi secara bawaan berisi nil.

local a, b, c = 1, 2, 3
print(a, b, c)    -- 1  2  3

local d, e = 10   -- e is nil
print(d, e)       -- 10  nil

local f           -- nil until assigned
f = 42
print(f)          -- 42

Konvensi Penamaan Variabel

Pengenal Lua mengikuti aturan berikut: harus diawali huruf atau garis bawah, lalu diikuti huruf, digit, atau garis bawah. Lua peka huruf besar-kecil, sehingga Value, value, dan VALUE adalah tiga variabel yang berbeda.

Sesuai convention: gunakan camelCase atau snake_case untuk variabel biasa, UPPER_CASE untuk konstanta, dan awali bidang modul privat dengan garis bawah. Hindari nama satu huruf kecuali untuk penghitung perulangan.

local myVariable = 1     -- camelCase
local my_variable = 2    -- snake_case
local MAX_SIZE = 100     -- constant convention
local _private = "hidden" -- private convention

-- Case sensitivity demo
local lua = "lower"
local Lua = "upper"
print(lua, Lua)  -- lower  upper

Tabel Global _G

Semua variabel global dalam Lua berada dalam tabel khusus bernama _G. Menulis x = 10 setara dengan _G.x = 10. Anda dapat memeriksa semua variabel global dengan melakukan iterasi pada _G, yang berguna untuk penelusuran kesalahan tetapi berbahaya dalam kode produksi.

Dalam Lua 5.2+, _ENV adalah tabel lingkungan yang sebenarnya, dan _G diinisialisasi agar menunjuk kepadanya. Memahami hal ini memungkinkan Anda mengisolasi kode dengan mengganti _ENV.

myGlobal = 42
print(_G.myGlobal)   -- 42

-- Setting via _G is the same as direct assignment
_G.another = "hello"
print(another)        -- hello

-- Counting globals (many built-ins exist)
local count = 0
for k in pairs(_G) do count = count + 1 end
print("Globals:", count)

Penetapan Ganda

Lua mendukung penetapan ganda: Anda dapat menetapkan beberapa variabel dalam satu pernyataan. Sisi kanan dievaluasi terlebih dahulu, lalu ditetapkan dari kiri ke kanan. Jika jumlah variabel lebih banyak daripada nilai, variabel sisanya mendapat nil. Jika jumlah nilai lebih banyak daripada variabel, nilai sisanya diabaikan.

Dengan demikian, menukar variabel menjadi mudah tanpa variabel sementara.

-- Swap without temp variable
local a, b = 10, 20
a, b = b, a
print(a, b)   -- 20  10

-- More variables than values
local x, y, z = 1, 2
print(x, y, z)  -- 1  2  nil

-- More values than variables
local p, q = 1, 2, 3  -- 3 is discarded
print(p, q)   -- 1  2

Lingkup dan Batas Blok

Pembatas blok Lua adalah: do...end, badan fungsi, if/elseif/else...end, while...end, repeat...until, dan for...end. Masing-masing membuat tingkat lingkup baru. Blok do...end berguna khusus untuk membatasi lingkup tanpa logika lain.

Variabel lokal yang dideklarasikan pada header perulangan for memiliki lingkup sebatas badan perulangan — variabel tersebut tidak keluar dari lingkup itu.

for i = 1, 3 do
  local msg = "item " .. i
  print(msg)
end
-- print(i)   -- would be nil, i is gone
-- print(msg) -- would be nil, msg is gone

-- do...end for manual scoping
do
  local temp = expensive_computation or 0
  print(temp)
end
-- temp is nil here

Konstanta: convention local

Lua tidak memiliki kata kunci bawaan const. convention yang digunakan adalah memakai nama UPPER_CASE dan local untuk menandakan bahwa suatu nilai tidak seharusnya berubah. Menempatkan konstanta sebagai variabel lokal di bagian atas modul juga memberi petunjuk kepada kompiler JIT bahwa nilai-nilai tersebut stabil.

Untuk imutabilitas sejati, Anda dapat menggunakan tabel proksi dengan __newindex yang menimbulkan kesalahan saat dimodifikasi — kita akan membahasnya dalam pelajaran metatabel.

local MAX_RETRIES = 3
local PI = 3.14159265358979
local APP_VERSION = "1.0.0"

-- Use them as read-only by convention
local area = PI * 5 * 5
print(area)           -- 78.539...
print(MAX_RETRIES)    -- 3

Penyembunyian Variabel

Penyembunyian terjadi ketika lingkup bagian dalam mendeklarasikan variabel lokal dengan nama yang sama seperti variabel di lingkup luar. Deklarasi bagian dalam membuat variabel yang sepenuhnya baru dan menyembunyikan variabel luar dalam lingkupnya. Variabel luar tidak berubah dan terlihat kembali setelah lingkup bagian dalam berakhir.

Penyembunyian dapat membingungkan; sebaiknya gunakan nama unik di seluruh lingkup bertingkat, meskipun terkadang hal ini disengaja, misalnya menggunakan kembali nama variabel perulangan dalam perulangan bertingkat.

local x = "outer"
do
  local x = "inner"  -- shadows outer x
  print(x)            -- inner
end
print(x)              -- outer (unchanged)

local n = 10
for n = 1, 3 do       -- loop n shadows outer n
  print(n)            -- 1, 2, 3
end
print(n)              -- 10 (outer unchanged)

Menghindari Pencemaran Global

Variabel global yang tidak sengaja dibuat merupakan kesalahan umum dalam Lua: salah mengetik nama variabel lokal secara diam-diam membuat variabel global baru. Modul strict.lua (yang umum disertakan dalam proyek) menangkap pembacaan dan penulisan variabel global yang belum dideklarasikan dengan menambahkan metatabel ke _G.

Pendekatan yang lebih sederhana: selalu gunakan local dan jalankan luac -p atau penganalisis kode seperti luacheck untuk mendeteksi variabel global yang tidak sengaja dibuat sebelum waktu eksekusi.

-- Dangerous: typo creates a global silently
local counter = 0
coutner = 5  -- typo! creates global 'coutner'
print(counter)  -- 0 (not 5!)
print(coutner)  -- 5 (the typo global)

-- Fix: always use local keyword
local score = 0
score = 10  -- assigns to existing local
print(score) -- 10

Penetapan Nil Menghapus Variabel Global

Menetapkan nil ke variabel global akan menghapusnya dari _G dan membebaskan memori. Inilah cara yang benar untuk "menghapus" variabel global. Untuk variabel lokal, membiarkannya keluar dari lingkup sudah menghasilkan efek yang sama — pengumpul sampah akan mengambil kembali memorinya.

Berhati-hatilah saat meneruskan nil dalam penetapan ganda: hal ini dapat memotong daftar argumen dalam konteks tertentu, terutama jika sisi kanannya berisi pemanggilan fungsi.

myGlobal = "exists"
print(myGlobal)   -- exists
print(_G.myGlobal ~= nil)  -- true

myGlobal = nil
print(myGlobal)   -- nil
print(_G.myGlobal ~= nil)  -- false
-- The entry is removed from _G

Pemeriksaan Singkat

Apa lingkup variabel yang dideklarasikan dengan local x = 5 di dalam badan perulangan for?

Ringkasan: Mendeklarasikan Variabel dalam Lua

Hal-hal penting dari pelajaran ini:

  • Variabel secara bawaan bersifat global — selalu gunakan local
  • Variabel lokal lebih cepat (tanpa pencarian hash) dan lebih aman
  • Penetapan ganda: a, b = b, a menukar nilai dalam satu baris
  • Semua variabel global berada dalam _G; menetapkannya ke nil akan menghapusnya
  • Penyembunyian: local di bagian dalam menyembunyikan variabel luar tanpa mengubahnya
  • Gunakan UPPER_CASE untuk konstanta sesuai convention

Berikutnya: operator aritmetika, relasional, dan logika.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendeklarasikan Variabel di Lua” gratis?

Ya — teks lengkap “Mendeklarasikan Variabel di Lua” 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 “Mendeklarasikan Variabel di Lua”?

Pahami variabel global dibandingkan lokal dan konvensi penamaan. 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 2 dari 4.

Berapa lama pelajaran “Mendeklarasikan Variabel di Lua” 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. Ikhtisar Tipe Data Lua
  2. Mendeklarasikan Variabel di Lua
  3. Operator Aritmetika dan Relasional
  4. Koersi dan Konversi Tipe
← Kembali ke Lua Academy