Değişken Sayıda Bağımsız Değer ve ... Operatörü
Değişken uzunluktaki bağımsız değer listelerini ... ve select() kullanarak yönetin.
Değişken Sayıda Bağımsız Değer ve ... Operatörü, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Değişken Sayıda Bağımsız Değişken
Bir Lua fonksiyonu, parametre listesinde ... (üç nokta) kullanarak değişken sayıda bağımsız değişken kabul edebilir. Fonksiyonun içinde ..., fazladan bağımsız değişkenleri temsil eder. Bunu ifadelerde kullanabilir, başka fonksiyonlara aktarabilir veya bir tabloya dönüştürebilirsiniz.
local function sum(...)
local total = 0
for _, v in ipairs({...}) do
total = total + v
end
return total
end
print(sum(1, 2, 3)) -- 6
print(sum(10, 20, 30, 40)) -- 100Değişken Sayıdaki Bağımsız Değişkenler için select()
select(n, ...), n konumundan sonraki bağımsız değişkenleri döndürür. select("#", ...), nil değerleri de dahil olmak üzere toplam bağımsız değişken sayısını döndürür. Bu, ilk nil boşluğunda duran #{...} ifadesinden daha güvenlidir.
local function inspect(...)
local n = select("#", ...)
print("count:", n)
for i = 1, n do
print(i, select(i, ...))
end
end
inspect("a", "b", nil, "d")
-- count: 4
-- 1 a
-- 2 b
-- 3 nil
-- 4 d... Değerini Başka Bir Fonksiyona Aktarma
Değişken sayıdaki bağımsız değişkenleri f(...) ile doğrudan başka bir fonksiyona iletebilirsiniz. Bir çağrıda ... son bağımsız değişken olarak göründüğünde, tüm değişken sayıdaki bağımsız değişkenler aktarılır. Bu, fonksiyonları sarmalamak veya günlük kaydı tutmak için kullanışlıdır.
local function log(level, ...)
io.write("[" .. level .. "] ")
print(...)
end
log("INFO", "Server started on port", 8080)
log("ERROR", "File not found:", "config.lua")
-- [INFO] Server started on port 8080
-- [ERROR] File not found: config.luatable.pack ve table.unpack
Değişken sayıdaki bağımsız değişkenleri, sayıyı n alanında da saklayan table.pack(...) ile bir tabloya dönüştürün. Bir tabloyu table.unpack(t, i, j) ile yeniden değişken sayıda bağımsız argümana dönüştürün. Bu iki fonksiyon birlikte, değişken sayıdaki bağımsız değişken listeleri üzerinde tam denetim sağlar.
local function pack_and_show(...)
local packed = table.pack(...)
print("n =", packed.n)
for i = 1, packed.n do
print(i, packed[i])
end
end
pack_and_show(10, nil, 30)
-- n = 3
-- 1 10
-- 2 nil
-- 3 30Sabit ve Değişken Bağımsız Değişkenleri Birlikte Kullanma
Bir fonksiyonda hem sabit hem de değişken parametreler bulunabilir. Sabit parametreler önce gelir; ... geri kalanları yakalar. Sabit parametrelere atama yapılır, ardından geri kalanlar ... içine gider.
local function printf(fmt, ...)
io.write(string.format(fmt, ...))
end
printf("Hello, %s! You are %d years old.\n", "Alice", 30)
printf("Pi is approximately %.4f\n", math.pi)
local function firstAndRest(first, ...)
print("first:", first)
print("rest count:", select("#", ...))
end
firstAndRest(1, 2, 3, 4)Tablo Oluşturucusunda Değişken Sayıda Bağımsız Değişken
Değişken sayıdaki bağımsız değişkenleri doğrudan bir tablo oluşturucusuna yayabilirsiniz: {...}. Son öğe olarak kullanıldığında tüm bağımsız değişkenler dahil edilir. Ancak nil boşlukları # operatörünü yanıltabilir — kesin sayıya ihtiyaç duyduğunuzda table.pack kullanmayı tercih edin.
local function toArray(...)
return {...} -- collect all args as array
end
local arr = toArray("x", "y", "z")
for i, v in ipairs(arr) do
print(i, v)
end
-- 1 x
-- 2 y
-- 3 zDeğişken Sayıda Bağımsız Değişken İfadeleri
... herhangi bir ifade konumunda görünebilir. Birden çoklu atamada tüm değerlerine açılır. Aritmetik bir ifadede yalnızca ilk değer kullanılır. Bu davranışı anlamak, ... ile diğer ifadeleri bir arada kullanırken oluşabilecek ince hataları önler.
local function first(...)
local x = ...
return x
end
print(first(10, 20, 30)) -- 10 (only first)
local function addFirst(n, ...)
local x = ...
return n + x
end
print(addFirst(5, 3, 99)) -- 8 (3 is first ...)print() Değişken Sayıda Bağımsız Değişken Kullanır
Lua'nın yerleşik print() fonksiyonu da değişken sayıda bağımsız değişken alan bir fonksiyondur. Herhangi bir sayıda bağımsız değişken kabul eder, her birini bir dizgeye dönüştürür ve aralarına sekme koyar. Bunu anlamak, benzer yardımcı fonksiyonlar yazmanıza yardımcı olur.
-- print is vararg
print(1, 2, 3) -- 1 2 3
print("a", nil, "b") -- a nil b
print() -- (empty line)
-- Reimplementing a simple print-like function
local function myprint(...)
local parts = {}
for i = 1, select("#", ...) do
parts[i] = tostring(select(i, ...))
end
io.write(table.concat(parts, "\t") .. "\n")
end
myprint(10, nil, 30)pcall ile İletme
Genel amaçlı güvenli çağrı sarmalayıcısı oluşturmak için pcall ile değişken sayıdaki bağımsız değişkenleri birleştirin. Sarmalayıcı bir fonksiyonu ve istenen sayıda bağımsız değişkeni kabul eder, fonksiyonu pcall aracılığıyla çağırır ve sonuçları veya bir hatayı döndürür.
local function safeCall(fn, ...)
local ok, result = pcall(fn, ...)
if ok then
return result
else
print("Error:", result)
return nil
end
end
local function divide(a, b)
assert(b ~= 0, "division by zero")
return a / b
end
print(safeCall(divide, 10, 2)) -- 5.0
print(safeCall(divide, 10, 0)) -- Error: ...Değişken Sayıda Bağımsız Değişkenleri Biriktirme Kalıbı
Yaygın bir değişken sayıda bağımsız değişken kalıbı, tüm bağımsız değişkenler üzerinde yineleme yaparak bir sonuç biriktirmektir. Bu işlem yerel bir tabloyla veya select kullanılarak doğrudan toplama yoluyla yapılabilir. Her iki yaklaşım da geçerlidir; çok sayıda bağımsız değişken için tablo yaklaşımı daha temizdir.
local function average(...)
local n = select("#", ...)
if n == 0 then return 0 end
local total = 0
for i = 1, n do
total = total + select(i, ...)
end
return total / n
end
print(average(10, 20, 30, 40)) -- 25.0
print(average(5)) -- 5.0Kısa Kontrol
select("#", 1, nil, 3) ne döndürür?
Özet: Değişken Sayıda Bağımsız Değişkenler
Özet:
function f(...)— değişken sayıda bağımsız değişken kabul ederselect("#", ...)— nil değerleri de içeren güvenli sayımselect(n, ...)— n konumundan sonraki değerlertable.pack(...)— değişken sayıdaki bağımsız değişkenleri .n sayımıyla tabloya dönüştürürtable.unpack(t)— tabloyu değişken sayıda bağımsız argümana dönüştürür- Son konumdaki
...tamamen açılır; orta konumda tek bir değer verir
Sıkça Sorulan Sorular
“Değişken Sayıda Bağımsız Değer ve ... Operatörü” dersi ücretsiz mi?
Evet — “Değişken Sayıda Bağımsız Değer ve ... Operatörü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Değişken Sayıda Bağımsız Değer ve ... Operatörü” dersinde ne öğreneceğim?
Değişken uzunluktaki bağımsız değer listelerini ... ve select() kullanarak yönetin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Değişken Sayıda Bağımsız Değer ve ... Operatörü” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İşlev Tanımlama ve Çağırma
- Birden Çok Dönüş Değeri
- Değişken Sayıda Bağımsız Değer ve ... Operatörü
- Lua'da Özyineleme