Menu
Coddy logo textTech

Lua Hile Sayfası

Son güncelleme

Hello World ve kod çalıştırma

Lua minimaldir - tek bir ifade çalışır.

İşlemSöz dizimi
Bir satır yazdırprint("Hello, World!")
Birden fazla değeri yazdırprint("x", 1, true)
Satır sonu olmadan yazio.write("Hi")
Yorum-- this is a comment
Çok satırlı yorum--[[ ... ]]
Dizeleri birleştirprint("Hi " .. name)
Bir dosyayı çalıştırlua app.lua
Etkileşimli kabuklua

Değişkenler ve tipler

Değişkenler varsayılan olarak globaldir; yerelleri local ile tanımlayın.

İşlemSöz dizimi
Yerel değişkenlocal age = 30
Global değişkencount = 0
Çoklu atamalocal a, b = 1, 2
Sekiz tipnil, boolean, number, string, table, function, userdata, thread
Nil / boolean'larnil, true, false
Tipi kontrol ettype(x), "number" döndürür
Sayıya dönüştürtonumber("42")
Dizeye dönüştürtostring(42)

Dizeler

Dizeler değiştirilemezdir; hem tek hem çift tırnak çalışır.

İşlemSöz dizimi
Uzunluk#s veya string.len(s)
Birleştirs1 .. s2
Büyük / küçük harfs:upper(), s:lower()
Alt dizes:sub(1, 3)
Alt dize buls:find("ell")
Değiştir (gsub)s:gsub("a", "b")
Biçimlendirstring.format("%05d", 42)
Uzun dize[[ multi\nline ]]

Table'lar (temel veri yapısı)

Table'lar Lua'nın tek yapısal tipidir - dizi, map ve nesne olarak iş görürler.

İşlemSöz dizimi
Boş tablelocal t = {}
Dizi tarzı (1 tabanlı)local t = {10, 20, 30}
Dizi elemanına erişt[1] (ilk eleman)
Map tarzı tablelocal u = {name = "Ada", age = 30}
Map değerine erişu.name veya u["name"]
Bir değer ayarlat[4] = 40, u.email = "a@x.com"
Dizi kısmının uzunluğu#t
Diziyi dolaş (ipairs)for i, v in ipairs(t) do ... end
Tüm anahtarları dolaş (pairs)for k, v in pairs(u) do ... end
İç içe tablelocal m = {a = {1, 2}}

Kontrol akışı

Bloklar end ile kapanır; yalnızca nil ve false yanlış (falsy) değerdir.

İşlemSöz dizimi
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Mantıksal operatörlerand, or, not
Sayısal forfor i = 1, 10 do ... end
Adımlı forfor i = 10, 1, -1 do ... end
While döngüsüwhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
Eşit değil operatörüif a ~= b then ... end

Fonksiyonlar

Fonksiyonlar birinci sınıf değerlerdir ve birden fazla sonuç döndürebilir.

İşlemSöz dizimi
Bir fonksiyon tanımlafunction add(a, b) return a + b end
Yerel fonksiyonlocal function square(x) return x * x end
Anonim fonksiyonlocal f = function(x) return x * 2 end
Birden fazla geri dönüş değerifunction bounds() return 1, 10 end
Birden fazla dönüşü yakalalocal lo, hi = bounds()
Variadic fonksiyonfunction sum(...) ... end
Varargs'ı toplalocal args = {...}
Metot (iki nokta söz dizimi)function obj:greet() ... end

String kütüphanesi

String kütüphanesinden yaygın fonksiyonlar (s:fn() olarak çağrılabilir).

FonksiyonNe yapar
string.len(s)Dizenin uzunluğu
string.sub(s, i, j)i indeksinden j indeksine alt dize
string.upper(s)Büyük harfli kopya
string.rep(s, n)Dizeyi n kez tekrarla
string.find(s, p)Bir desen bul, başlangıç/bitiş döndürür
string.match(s, p)İlk desen eşleşmesini döndür
string.gsub(s, p, r)Tüm desen eşleşmelerini değiştir
string.format(fmt, ...)Değerleri bir dizeye biçimlendir

Table ve math kütüphaneleri

Dizi tarzı table'lar ve sayılarla çalışmak için yardımcılar.

FonksiyonNe yapar
table.insert(t, v)Sona bir değer ekle
table.insert(t, i, v)v'yi i konumuna ekle
table.remove(t, i)i'deki elemanı kaldır ve döndür
table.concat(t, ", ")Elemanları bir dizeye birleştir
table.sort(t)Diziyi yerinde sırala
math.floor(x) / math.ceil(x)Aşağı / yukarı yuvarla
math.max(...) / math.min(...)En büyük / en küçük argüman
math.random(1, 6)Bir aralıkta rastgele tam sayı

Metatable'lar (kısaca)

Metatable'lar, table'ların nasıl davrandığını özelleştirmenizi sağlar - operatörler, indeksleme ve daha fazlası.

İşlemSöz dizimi
Bir metatable ayarlasetmetatable(t, mt)
Bir metatable algetmetatable(t)
Eksik anahtarlar için yedekmt.__index = defaults
Fonksiyonla varsayılanmt.__index = function(t, k) ... end
Toplamayı özelleştirmt.__add = function(a, b) ... end
tostring'i özelleştirmt.__tostring = function(t) ... end
Prototip tabanlı OOPmt.__index = ClassTable

En çok başvurduğunuz Lua söz dizimi tek sayfada. Bu Lua hile sayfası, temel dil için hızlı bir başvurudur - değişkenler ve tipler, dizeler, kontrol akışı, fonksiyonlar ve Lua'nın tek, esnek veri yapısı olarak hizmet eden table'lar, ayrıca standart kütüphanelere ve metatable'lara bir bakış.

Buradaki her şey standart Lua'dır ve sıradan bir yorumlayıcıda çalışır. İhtiyacınız olanı kopyalayın ya da her kod parçasını Lua playground'da canlı deneyin - kurulum gerekmez.

Lua hile sayfası SSS

Bu Lua hile sayfası ücretsiz mi?
Evet. Bu Lua hile sayfası tamamen ücretsizdir ve kayıt gerektirmez. Yer imlerinize ekleyin ve bir table işlemine, dize fonksiyonuna ya da kontrol akışı anahtar kelimesine bakmanız gerektiğinde geri dönün.
Bir Lua table'ı hem dizi hem map nasıl olabilir?
Bir table yalnızca bir anahtar-değer çiftleri kümesidir ve anahtar herhangi bir değer olabilir. 1'den başlayan ardışık tam sayı anahtarları kullandığınızda ({10, 20, 30}) table bir dizi gibi davranır; dize anahtarları kullandığınızda ({name = "Ada"}) bir map gibi davranır. Hatta aynı table'da ikisini de karıştırabilirsiniz. İşte bu yüzden Lua'nın yalnızca tek bir yapısal tipe ihtiyacı vardır - table; dizileri, sözlükleri, kümeleri ve nesneleri kapsar.
Lua neden 1 tabanlı indeksleme kullanır?
Geleneğe ve tasarıma göre, Lua dizileri 0'dan değil, 1 indeksinden başlar - dolayısıyla t[1] ilk eleman, #t ise sayıdır. Uzunluk operatörü # ve table.insert ile ipairs gibi kütüphane fonksiyonlarının tümü bu 1 tabanlı geleneği varsayar, bu yüzden ona bağlı kalmak dizi kodunuzu beklendiği gibi çalışır tutar.
Lua'yı çevrimiçi olarak deneyebilir miyim?
Evet. Lua playground'u açarak bu hile sayfasındaki herhangi bir kod parçasını tarayıcınızda çalıştırabilirsiniz - Lua kurulumu gerekmez. Yapı istediğinizde, Coddy'nin ücretsiz etkileşimli Lua kursu sizi değişkenler ve table'lardan fonksiyonlara ve metatable'lara adım adım götürür.
Bu hile sayfası yeni başlayanlar için uygun mu?
Evet. En yaygın konulardan (değişkenler, dizeler, table'lar, kontrol akışı) gelişmiş olanlara (standart kütüphaneler ve metatable'lar) doğru düzenlenmiştir, böylece üstteki bölümleri ilk günden kullanabilir ve zamanla geri kalanına geçebilirsiniz.
Coddy programming languages illustration

Coddy ile Lua öğren

BAŞLA