Beberapa Nilai Kembalian
Kembalikan dan tangkap beberapa nilai dari satu pemanggilan fungsi.
Beberapa Nilai Kembalian 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.
Mengembalikan Beberapa Nilai
Berbeda dari kebanyakan bahasa, fungsi Lua dapat secara bawaan mengembalikan beberapa nilai dari satu pernyataan return. Beberapa nilai dipisahkan dengan koma setelah return. Dengan demikian, Anda tidak memerlukan objek pembungkus atau parameter keluaran.
local function divmod(a, b)
return math.floor(a / b), a % b
end
local quotient, remainder = divmod(17, 5)
print(quotient, remainder) -- 3 2Menyesuaikan Nilai Kembalian
Lua menyesuaikan nilai kembalian agar sesuai dengan jumlah penerima. Nilai berlebih dibuang; nilai yang kurang menjadi nil. Penyesuaian ini terjadi setiap kali pemanggilan fungsi bukan merupakan ekspresi terakhir dalam sebuah daftar — pada posisi tersebut, hanya nilai pertama yang dipertahankan.
local function triple()
return 10, 20, 30
end
local a, b, c = triple()
print(a, b, c) -- 10 20 30
local x, y = triple()
print(x, y) -- 10 20 (30 discarded)
local p = triple()
print(p) -- 10 (only first when 1 var)Penyesuaian pada Posisi Tengah
Ketika pemanggilan fungsi muncul di tengah daftar ekspresi (bukan pada posisi terakhir), Lua memotong hasilnya menjadi satu nilai. Hanya ekspresi terakhir dalam daftar yang dapat menghasilkan beberapa nilai.
local function pair()
return 1, 2
end
-- pair() in middle: only 1 value used
local t = {pair(), pair()}
print(#t, t[1], t[2], t[3]) -- 3 1 1 2
-- first pair() gives just 1; last pair() gives 1,2
-- pair() at end: all values used
local t2 = {10, pair()}
print(#t2, t2[1], t2[2], t2[3]) -- 3 10 1 2Tanda Kurung Memaksa Satu Nilai
Membungkus pemanggilan fungsi dengan tanda kurung memaksanya mengembalikan tepat satu nilai. Ini berguna ketika Anda hanya menginginkan nilai kembalian pertama, terlepas dari berapa banyak nilai yang dihasilkan fungsi tersebut.
local function coords()
return 10, 20, 30
end
print(coords()) -- 10 20 30 (all three)
print((coords())) -- 10 (parentheses: single value only)
local x = (coords())
print(x) -- 10Nilai Kembalian string.find
Banyak fungsi pustaka standar menggunakan beberapa nilai kembalian. string.find mengembalikan posisi awal dan akhir dari kecocokan (serta hasil tangkapan). math.modf mengembalikan bagian bilangan bulat dan pecahan. Memahami pola-pola ini membantu Anda menggunakan pustaka standar dengan lancar.
local s = "hello world"
local start, finish = string.find(s, "world")
print(start, finish) -- 7 11
-- math.modf: integer and fractional parts
local int, frac = math.modf(3.75)
print(int, frac) -- 3 0.75Menangkap dengan table.pack
table.pack(...) menangkap semua argumen (atau nilai kembalian melalui ...) ke dalam sebuah tabel. Tabel tersebut menyertakan field n yang berisi jumlah total, termasuk nilai nil. Hal ini mempertahankan jumlah yang tepat, berbeda dari # yang berhenti pada celah pertama.
local function getData()
return "Alice", 30, nil, true
end
local t = table.pack(getData())
print(t.n) -- 4
print(t[1]) -- Alice
print(t[2]) -- 30
print(t[3]) -- nil
print(t[4]) -- truetable.unpack untuk Membentangkan Nilai
table.unpack(t, i, j) mengembalikan elemen-elemen tabel sebagai nilai individual. Ini merupakan kebalikan dari table.pack. Gunakan untuk meneruskan isi tabel sebagai argumen ke suatu fungsi, atau untuk membentangkan nilai dalam pernyataan return.
local args = {10, 20, 30}
local function sum3(a, b, c)
return a + b + c
end
print(sum3(table.unpack(args))) -- 60
-- Use in return
local function passThrough(t)
return table.unpack(t)
end
print(passThrough({5, 6, 7})) -- 5 6 7Nilai Kembalian Bergaya Galat
Konvensi Lua yang umum adalah mengembalikan nil, errorMessage saat gagal dan hasil saat berhasil. Pemanggil memeriksa nilai kembalian pertama: jika nil, berarti terjadi galat. Dengan demikian, pengecualian tidak diperlukan untuk kasus kegagalan yang diperkirakan.
local function openConfig(path)
local f = io.open(path, "r")
if not f then
return nil, "cannot open: " .. path
end
local content = f:read("*a")
f:close()
return content
end
local data, err = openConfig("config.lua")
if not data then
print("Error:", err)
endMenukar dengan Beberapa Nilai Kembalian
Beberapa nilai kembalian menyelesaikan masalah penukaran dengan elegan. Sisi kanan dievaluasi sebelum penugasan, sehingga a, b = b, a menukar nilai dengan benar tanpa variabel sementara.
local a, b = 5, 10
print(a, b) -- 5 10
a, b = b, a
print(a, b) -- 10 5
-- Works for three-way rotation too
local x, y, z = 1, 2, 3
x, y, z = z, x, y
print(x, y, z) -- 3 1 2Konvensi Nilai Kembalian pcall
pcall(f, ...) sendiri menggunakan beberapa nilai kembalian: nilai pertama adalah boolean (true saat berhasil, false saat terjadi galat), sedangkan nilai-nilai berikutnya adalah nilai kembalian f atau pesan galat. Selalu periksa nilai kembalian pertama sebelum menggunakan nilai lainnya.
local function risky(x)
if x < 0 then error("negative input") end
return math.sqrt(x)
end
local ok, result = pcall(risky, 16)
print(ok, result) -- true 4.0
ok, result = pcall(risky, -1)
print(ok, result) -- false input:2: negative inputPemeriksaan Cepat
Apa keluaran dari print((string.find("hello", "ll")))?
Ringkasan: Beberapa Nilai Kembalian
Hal-hal penting:
- Kembalikan beberapa nilai:
return a, b, c - Nilai berlebih dibuang; nilai yang kurang menjadi nil
- Pemanggilan pada posisi tengah dipotong menjadi 1 nilai
(f())memaksa tepat 1 nilaitable.pack/table.unpackuntuk daftar nilai dinamis- Konvensi: kembalikan
nil, errmsgsaat gagal
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Beberapa Nilai Kembalian” gratis?
Ya — teks lengkap “Beberapa Nilai Kembalian” 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 “Beberapa Nilai Kembalian”?
Kembalikan dan tangkap beberapa nilai dari satu pemanggilan fungsi. 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 “Beberapa Nilai Kembalian” 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
- Mendefinisikan dan Memanggil Fungsi
- Beberapa Nilai Kembalian
- Vararg dan Operator ...
- Rekursi dalam Lua