Lua Veri Türlerine Genel Bakış
nil, boolean, number, string, table, function ve userdata türlerini keşfedin.
Lua Veri Türlerine Genel Bakış, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. 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.
Lua'ya Hoş Geldiniz
Lua; oyun motorlarında, web sunucularında ve gömülü sistemlerde kullanılan hafif, hızlı ve gömülebilir bir betik dilidir. Gerçek programlar yazmaya başlamadan önce Lua'nın verileri nasıl temsil ettiğini anlamanız gerekir.
Lua'da 8 temel tür vardır: nil, boolean, number, string, table, function, userdata ve thread. Lua'daki her değer tam olarak bu türlerden birine aittir.
-- Check the type of any value with type()
print(type(42)) -- number
print(type("hello")) -- string
print(type(true)) -- boolean
print(type(nil)) -- nilnil: Değer Yokluğu
nil, Lua'nın hiçbir şeyi veya değer yokluğunu temsil etme biçimidir. Kendi türünün tek değeridir. Hiçbir zaman değer atanmamış değişkenler otomatik olarak nil değerini taşır.
Bir genel değişkene nil atamak, onu fiilen siler. Tablolarda bir anahtara nil atanması, ilgili girdiyi tamamen kaldırır.
-- Unassigned variables are nil
print(x) -- nil
x = 10
print(x) -- 10
x = nil
print(x) -- nil (variable is gone)boolean: true ve false
boolean türünün tam olarak iki değeri vardır: true ve false. Lua'nın doğruluk kuralları basit ama önemlidir: yalnızca nil ve false yanlış kabul edilir. 0 sayısı ve boş dize "" dahil olmak üzere diğer her şey doğru kabul edilir.
Bu durum, 0 veya "" değerlerinin yanlış kabul edildiği birçok dilden farklıdır.
-- Lua truthiness examples
if 0 then print("0 is truthy!") end -- prints!
if "" then print("empty str is truthy!") end -- prints!
if nil then print("nil") else print("nil is falsy") end
if false then print("false") else print("false is falsy") endnumber: Tamsayılar ve Ondalıklı Sayılar
Lua 5.3 ve sonraki sürümlerde number türünün iki alt türü vardır: integer ve float. Tamsayılar kesin 64 bit değerlerdir; ondalıklı sayılar IEEE 754 çift duyarlıklı değerlerdir. Lua 5.1 ve 5.2'de tüm sayılar çift duyarlıklı sayılardır.
math.type() işlevi bu iki alt türü birbirinden ayırır. / ile yapılan bölme her zaman ondalıklı sayı döndürür; // (taban bölmesi), her iki işlenen de tamsayı olduğunda tamsayı döndürür.
print(type(10)) -- number
print(type(10.5)) -- number
print(math.type(10)) -- integer
print(math.type(10.5))-- float
print(10 / 3) -- 3.3333...
print(10 // 3) -- 3 (floor division)string: Lua'da Metin
Lua'daki dizeler, değiştirilemez bayt dizileridir. Dizeleri tek tırnak, çift tırnak veya çok satırlı dizeler için uzun köşeli ayraçlarla [[...]] sınırlayabilirsiniz. Uzun köşeli ayraçlarla yazılan dizeler ilk satır sonunu yok sayar ve geri kalan her şeyi olduğu gibi korur.
Lua dizeleri birleştirilmiş olarak saklanır; bu nedenle aynı dizeler belleği paylaşır. Uzunluk işleci #, bayt sayısını döndürür.
local s1 = 'single quotes'
local s2 = "double quotes"
local s3 = [[multi-line
long string]]
print(#s1) -- 13
print(type(s1)) -- string
print(s1 .. " works") -- concatenation with ..table: Evrensel Kapsayıcı
table türü, Lua'nın tek bileşik veri yapısıdır; yine de dizi, sözlük, nesne, küme ve daha fazlasını gerçekleştirecek kadar güçlüdür. Tablolar, anahtarları değerlere eşleyen ilişkisel dizilerdir; anahtarlar nil veya NaN olmayan herhangi bir değer olabilir.
Tablolar süslü parantezlerle {} oluşturulur. Dizi tarzı tablolarda 1'den başlayan tamsayı anahtarlar kullanılır.
-- Array style
local fruits = {"apple", "banana", "cherry"}
print(fruits[1]) -- apple (1-indexed!)
-- Dictionary style
local person = {name = "Alice", age = 30}
print(person.name) -- Alice
print(person["age"]) -- 30function: Birinci Sınıf Değerler
Lua'daki işlevler, function türünde birinci sınıf değerlerdir. Değişkenlerde saklanabilir, bağımsız değişken olarak aktarılabilir ve başka işlevlerden döndürülebilirler. Bu özellik, Lua'yı işlevsel programlama kalıpları için doğal olarak uygun hâle getirir.
İşlevleri function anahtar sözcüğünü kullanarak tanımlayabilir veya adsız işlevleri değişkenlere atayabilirsiniz. Her iki biçim de birbirine denktir.
-- Two equivalent ways to define a function
function greet(name)
return "Hello, " .. name
end
local greet2 = function(name)
return "Hello, " .. name
end
print(type(greet)) -- function
print(greet("Lua")) -- Hello, Luauserdata ve thread
userdata, ana uygulama tarafından yönetilen rastgele C verilerini temsil eder. Saf Lua ile userdata oluşturamazsınız; userdata, C eklentilerinden veya oyun motorları gibi gömme ortamlarından gelir. C kodunun nesneleri Lua betiklerine sunmasını sağlar.
thread, kendi yığınlarına sahip bağımsız yürütme akışları olan coroutine'leri temsil eder. Coroutine'leri özel bir derste inceleyeceğiz. Şimdilik coroutine.create() işlevinin thread türünde bir değer döndürdüğünü bilmeniz yeterlidir.
-- thread type via coroutine
local co = coroutine.create(function()
print("coroutine body")
end)
print(type(co)) -- thread
-- userdata comes from C, not creatable in pure Lua
-- type(io.stdin) == "file" is a userdata variantDeğerleri İncelemek için type() Kullanımı
Yerleşik type() işlevi, bağımsız değişkeninin türünü adlandıran bir dize döndürür. Bu, savunmacı programlama ve hata ayıklama için kullanışlıdır. Sonucu doğrudan tür adı dizeleriyle karşılaştırabilirsiniz.
type(nil) ifadesinin nil değerinin kendisini değil, "nil" dizesini döndürdüğüne dikkat edin. Bu sayede bir değişkenin hata oluşmadan nil taşıyıp taşımadığını güvenle denetleyebilirsiniz.
local values = {42, "hi", true, nil, {}, function() end}
-- Note: nil in table stops ipairs early
for i = 1, 3 do
print(i, type(values[i]))
end
-- 1 number
-- 2 string
-- 3 booleanDiğer Dillerden Tür Farkları
JavaScript, Python veya Java biliyorsanız bazı Lua tür kuralları sizi şaşırtabilir. type() tarafından görülen ayrı bir tamsayı türü yoktur; hem tamsayılar hem de ondalıklı sayılar "number" döndürür. Dizilerin kendilerine ait bir türü yoktur; bunlar yalnızca tablodur. Sınıflar yoktur; nesneler metatablolara sahip tablolardır.
Bu farkları anlamak, diller arasında geçiş yaparken sık karşılaşılan hataları önler.
-- No separate array type
local arr = {1, 2, 3}
print(type(arr)) -- table (not array!)
-- No separate integer type visible
print(type(1)) -- number
print(type(1.0)) -- number
-- math.type distinguishes
print(math.type(1)) -- integer
print(math.type(1.0)) -- floatHızlı Kontrol
Lua'da type(0) ne döndürür?
Özet: Lua Veri Türlerine Genel Bakış
Lua'nın 8 türünün tamamını öğrendiniz:
- nil — değer yokluğu; yanlış kabul edilir
- boolean — true/false; yalnızca nil ve false yanlış kabul edilir
- number — tamsayı veya ondalıklı sayı; ayırt etmek için math.type() kullanın
- string — değiştirilemez bayt dizileri; birleştirmek için .. kullanın
- table — diziler ve sözlükler için evrensel kapsayıcı
- function — değişkenlerde saklanabilen birinci sınıf değerler
- userdata — Lua'ya sunulan C verileri
- thread — coroutine tanıtıcıları
Sıradaki konu: değişken tanımlama — genel ve yerel kapsam.
Sıkça Sorulan Sorular
“Lua Veri Türlerine Genel Bakış” dersi ücretsiz mi?
Evet — “Lua Veri Türlerine Genel Bakış” 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.
“Lua Veri Türlerine Genel Bakış” dersinde ne öğreneceğim?
nil, boolean, number, string, table, function ve userdata türlerini keşfedin. 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 1. dersidir.
“Lua Veri Türlerine Genel Bakış” 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
- Lua Veri Türlerine Genel Bakış
- Lua'da Değişken Tanımlama
- Aritmetik ve Karşılaştırma Operatörleri
- Tür Dönüştürme ve Çevirme