İçindekiler
Lua Veri türleri ve değerleri söz konusu olduğunda dinamik bir dildir, yani bir değişken oluştururken ve bunun bir dize, sayı veya hatta bir Boole olduğunu belirtirken herhangi bir tür tanımı yoktur.İfadeler değerlerle el ele gider, bunlar aritmetik, ilişkisel ve hatta koşullu işlemlerden programlarımıza dinamizm kazandırmak için değişebilen işlemler yapmamıza izin verir, ancak ifadelere geçmeden önce değer türlerini görelim. biz sahibiz Lua ve dil içinde nasıl çalıştıkları.
İçinde Lua Her değer kendi türünü yükler, burada bunlardan sekiz farklı tür bulabiliriz: nil, boole, sayı, dize, kullanıcı verileri, işlev, iş parçacığı ve tablo, fonksiyon ile nerede tip () verilen değerin tip adını bilebiliriz. Nasıl olduğuna dair basit bir örnek görelim Lua buna göre yorumlayın tip ():
sıfırBu, ana özelliği diğer değerlerden farklı olmak olan bir değer türüdür. Son öğreticide gördüğümüz gibi, global bir değişken varsayılan olarak değere sahiptir. sıfır ve onu ortadan kaldırmak istersek, bu değeri atarız, hatta yararlı bir değerin yokluğunu temsil etmek için kullanabiliriz.
BooleBoole değerleri, diğer programlama dillerinde olduğu gibi, true ve false olmak üzere iki değere sahiptir, ancak diğer dillerden farklı olarak, bu tür veriler, herhangi biri bir koşulu temsil edebileceğinden, koşullar üzerinde toplam etki alanına sahip değildir.
NumaraBu veri türü hem tam sayıları hem de ondalık sayıları temsil eder. Lua bir tamsayı değer türüne sahip değildir ve buna ihtiyaç duymaz, çünkü Lua herhangi bir 32-bit tamsayıyı yuvarlama sorunu olmadan temsil edebilir, ancak dille ilgili en ilginç şey, onu uzun tamsayılar veya kayan sayılar gibi başka bir tür kullanmak için derleyebilmemizdir; bu, donanımın olmadığı durumlar için oldukça yararlıdır. ondalık sayılar için destek.
Sicimiçindeki dizeler Lua Bunlar bir karakter dizisidir, değişmez olan değerlerdir, yani string içindeki bir karakteri değiştiremeyiz. Diğer nesneler gibi dilin otomatik belleği tarafından işlenirler ve dize ataması çift veya tek tırnak ile olabilir.
TabloTablo veri türü, yalnızca sayılarla değil, dizelerle veya nil dışında herhangi bir dil değeriyle dizinlenebilen bir dizi olan bir ilişkisel dizi uygular. Tabloların sabit bir boyutu yoktur, bu nedenle istediğimiz kadar eleman ekleyebiliriz ve onlarla birlikte modülleri, paketleri ve nesneleri benzer şekilde temsil edebiliriz. Son olarak, oluşturulması parantez kullanmak kadar basittir {} tablo başlatmada.
Özellikleriiçindeki işlevler Lua oldukça tuhaf bir davranışları var, onları değişkenlere kaydedebilir, diğer fonksiyonlara argüman olarak iletebilir ve hatta sonuç olarak geri döndürebiliriz. Lua hem dilin kendisinde hem de C'de yazılmış bu işlevleri çağırabilirsiniz.
Kullanıcı bilgisiveri türü Kullanıcı bilgisi değişkenlerinde saklanmasına izin verir. Lua C'den rastgele bilgi. Üzerinde önceden tanımlanmış bir işlemi yoktur. Lua, bu türün ana işlevinin C ile yazılmış bir uygulama veya kitaplık tarafından oluşturulan yeni türleri temsil etmek olduğu atama ve eşitlik testleri hariç.
Gördüğümüz gibi, türler mevcut dillerde bulabildiklerimizden çok farklı değil, ancak kesin olan şu ki, onları temsil etmemiz gereken basitlik çok daha fazla, o zaman ifadelerin rolüne ve onları nasıl kullanabileceğimize bakalım. değerlerimizle.
Aritmetik işlemler herhangi bir program için son derece önemlidir ve bunların nasıl ele alınacağını ve kullandığımız dilde hangi kısıtlamaların olabileceğini bilmek önemlidir. Lua alıştığımız geleneksel operatörleri destekler: toplama, çıkarma, çarpma, bölme, üstel, yüzde ve olumsuzlama.
O zaman bazı operatörlerin kullanımını gösterdiğimiz basit bir kod görelim. Lua:
x = 8 + 5 y = 9 - 2 yazdır (x * y% 0.01)Bir çarpma işlemi sonucunda toplama, çıkarma ve 2'ye bölme kullanıyoruz, kodumuzu konsol üzerinden çalıştırdığımızda yorumlayıcının nasıl tepki verdiğini görelim:
BÜYÜT
Lua diğer diller gibi bize büyüktür>, küçüktür <, küçüktür veya eşittir =, eşittir-eşit == ve olumsuzlama ~ = gibi ilişkisel operatörleri verir. Belki de farklı olanın inkar olduğunu görüyoruz ama alıştıktan sonra kullanımında hiçbir sorun kalmayacak.
Tüm bu operatörler, hem eşitlik operatörünü hem de olumsuzlama operatörünü iki değere uygulayabileceğimiz yerde, doğru veya yanlış döndürebilir. Bu karşılaştırmalar Lua diğer faktörlerin yanı sıra türe göre yapar, aynı nesneye göre karşılaştırmanın yapıldığı aşağıdaki kodda görelim:
bir = {}; a.x = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = birAynı şeyi karşılaştırırsak, işlemin sonucu bize a'nın c'ye eşit olduğunu ancak a'nın b'den farklı olduğunu verirse, bunun nedeni onların aynı nesne olmalarıdır. Ek olarak, farklı türleri karşılaştırırken çok dikkatli olmalıyız, çünkü örneğin 6, "6" dan farklıdır ve "3" <"8" gibi bir şey yaparsak Lua dizeleri karıştırdığımız için hata verecektir.
Mantıksal operatörler Lua onlar ve, ya da ve değiller. Bu operatörler kullanılarak bir karşılaştırma yapıldığında, eğer false ise ilk argüman döndürülür, aksi takdirde ikincisi döndürülür.Önümüzdekileri göstermek için interaktif konsolda bir dizi örnek görelim.
BÜYÜT
BÜYÜT
Son olarak, tablolar oluşturmamıza ve başlatmamıza izin veren ifadeler olan yapıcılara sahibiz, bu özellik bize özgüdür. Lua ve onun en çok yönlü ve güçlü mekanizmalarından biridir. Boş bir kurucuyu sadece parantezler ile sorunsuz bir şekilde kullanabiliriz. {} bu şekilde boş bir tablo oluşturacaktır. Bunlar ayrıca dizileri veya listeleri başlatabilir, bir örnek görelim:
gün = {"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"}Burada haftanın günlerini içeren bir liste oluşturuyoruz ve eğer sahip olduğumuz indeksi belirterek elemanlarına erişmek istiyorsak, örneğin Perşembe elde etmek için 5 numaralı dizin olur veya Pazar 1 sayısı olur, o zamandan beri Lua Diğer diller gibi sıfıra başlamaz, konsolumuzda çalıştırdığımızda nasıl göründüğüne bakalım:
dizi = {x = 26, y = 67}
Ancak değerlerine erişmek için çift dinlenme tırnakları ile indekse referans yapmamız önemlidir, nil değerini elde edeceğiz, etkileşimli konsolda işlemimizi görüyoruz: