Rehber Lua Tutorial - Tüm kavramlarıyla

  • Konuyu Başlatan Mbl
  • Başlangıç tarihi
  • Cevaplar 24
  • Görüntüleme 839

Mbl

FS Kullanıcı

İtibar Puanı: 69

1 Kas 2020
66
69
18
Arkadaşlar bu konuyu okuyan developer olarak çıkıyor forumdan iyi anlamalar.
Konunun sabitlenmesi için #konusabitlensingardaş yazarak destek olabilirsiniz.
İyi forumlar.

DEĞİŞKENLER
Değişkenler veri saklayabilmemizi/tutabilmemizi sağlayan araçlardır.

Değişkenlerde bazı kısıtlamalarımız vardır. Eşittirden önceki kısımda (değişken) sadece ingilizce karakterler ve sayıları kullanabilirsiniz. Veri kısmında ise özgürsünüz, her türlü veriyi değişkende saklayabilirsiniz.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Yerel Değişkenler

Yerel bir değişken oluşturmak için değişkenin başına local eklemeniz yeterlidir. Bulunduğu fonksiyon, kontrol, döngü vb. içerisinde kullanılabilir. Alanı dışında kullanılırsa daha önceden verilmiş değer veya nil olur.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Eğer bir değişkene fonksiyon dışında ve içinde ayrı değer verilirse ve fonksiyon(bu kontrol vs.de olabilir) içerisinde yerel değişken ise aşağıdaki gibi olur;
Kod:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Sayı ( number , integer , float )

Kesirli sayılar ondalık kesir biçimine çevrilip, ondalık sayı olarak kullanılır.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
LUA matematiksel işlemleri yapmamıza olanak verir.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Sayısal değeri bir değişkene atayıp, daha sonradan tekrar kullanabiliriz.
Kod:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
--> 7[/CODE]

Değer atadığımız değişkenin değerini daha sonradan değiştirebiliriz.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Yazı ( string )

LUA'da yazıları oluşturmak için "çift tırnak" veya 'tek tırnak' kullanabilirsiniz.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Yazıyı bir değişkene atayıp daha sonradan kullanabiliriz.
Kod:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
İki yazıyı birbirine iki nokta yani .. ile bağlayabiliriz.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
İki yazıyı birbirine bağlamak için toplama işlemini kullanamazsınız, çünkü yazılar toplanamaz xD
Kod:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Boolean ( true , false )

Boolean değerler true veya false değerlerdir. Kontroller ve bazı döngüler için olmazsa olmazdır.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol

Tablo ( table )

İçerisine bilgi depolamak için kullanılır. Şimdi boş bir tablo oluşturalım.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Fonksiyon ( function )

LUA'da fonksiyonlar, sayı ve yazılar gibi değişkenlere atanır. Fonksiyonların bir adı olmalıdır. Ufak bir örnek ile daha iyi anlayacağınızı düşünüyorum;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Fonksiyonların ismini function teriminden sonra da yazabilirsiniz, bu durumda bu fonksiyonu bir değişkene atayamazsınız, bir fonksiyona iki kere isim vermek gibi bir durum olur bu da saçma bir durum. Ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Fonksiyon içerisinde yazı yazmak ile fonksiyonu print fonksiyonuyla yazdırmak aynı şeyler değildir.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Fonksiyonlar, bir tablonun parçası olabilir.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
nil

Var olmayan anlamına gelir. Var olmayan bir değişkeni kullanmaya çalışırsanız nil döndürür.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Dinamik Kodlama ( Dynamic typing )

LUA'da değişkenlerin türünü istediğiniz gibi değiştirebilirsiniz. Bu özellik LUA'nın en büyük kolaylıklarından biridir.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Sorgulama Fonksiyonu ( type() )

Bu fonksiyon verilen değişkenin türünü döndürür.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Operatörler

Aritmetik(Matematiksel) Operatörler
Bu operatörler şunlardır: +, -, *, /, %, ^

+(artı): toplama operatörüdür, iki tarafındaki sayı değerlerini toplar.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
-(eksi): çıkartma operatörüdür, sol tarafıncaki sayı değerinden sağ tarafındaki sayı değerini çıkartır.
*(çarpım): çarpma operatörüdür, iki tarafındaki sayı değerlerini çarpar.
/(bölü): bölme operatörüdür, sol tarafındaki sayı değerini sağ tarafındaki sayı değerine böler.
%(kalan): solundaki sayının sağındaki sayıya bölümünden kalanı verir.
^(üst): solundaki sayıyının sağındaki üssünü verir.

Karşılaştırma(Kontrol) Operatörleri
Bu operatörler genelde kontroller(if) için kullanılır.
Bu operatörler şunlardır: >, <, >=, <=, ==, ~=

Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
<(küçüktür): sol tarafındaki değer sağ tarafındaki değerden küçük ise true, büyük ise false döndürür.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
>=(büyük eşit): sol tarafındaki değer sağ tarafındaki değerden büyük veya eşit ise true, küçük ise false döndürür.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
<=(küçük eşit): sol tarafındaki değer sağ tarafındaki değerden küçük veya eşit ise true, büyük ise false döndürür.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
==(eşit): sol tarafındaki değer ile sağ tarafındaki değer birbiriyle aynı ise true, farklı ise false döndürür. Burdaki değer sadece sayı olmak zorunda değildir, her şey olabilir.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
~=(eşit değil): sol tarafındaki değer ile sağ tarafındaki değer birbirinden farklı ise true, aynı ise false döndürür. Burada var-yok gibi tam bir zıtlık var mı diye bakılmaz, operatörün iki tarafının aynı olup olmamasına bakılır. Aynı ise false farklı ise true döndürür.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Mantıksal Operatörler
Bu operatörler şunlardır: not, and, or

not Operatörü: Bu operatör sağ tarafındaki boolean ifadenin zıttını size döndürür. Eğer sağ tarafındaki ifade bir değer ise false, nil ise true döndürür. Ufak bir örnek;


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
and Operatörü: Solundaki ifade nil veya false ise solundaki değeri döndürür.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Solundaki ifade false veya nil değil ise sağındaki ifadeyi döndürür.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
or Operatörü: Solundaki iafe false veya nil değil ise solundaki ifadeyi döndürür.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Solundaki ifade false veya nil ise sağındaki ifadeyi döndürür.
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
or operatörü genelde fonksiyon içinde varsayılan değişkeni ayarlamak için kullanılır. Örneğin;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol

Üçlü Operatörler

LUA'da üçlü operatörler bulunmasada and ve or kullanarak siz bunu yapabilirsiniz.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Kontrol Yapısı ( if , elseif , else )​

Kontrol yapıları, seçim yapmanızı ve bir kodun sadece istediğiniz kısmını çalıştırmanızı sağlar.


if (Eğer, şart, koşul) Terimi

if terimi, koşula bağlı olarak farklı kodları çalıştırmanızı sağlar. else ve elseif terimlerini eklemek size kalmıştır.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol

if ve elseif'ler sırasıyla kontrol edilir, koşullardan biri true olduğunda altındaki kodları çalıştırılır ve ardından diğer tüm koşulları göz ardı ederek sonuna kadar atlanır. Kontrollerden hiçbiri eşleşmezse, eğer eklediyseniz else'den sonraki kodlar çalışır.

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Yukarıdaki kod uzun ve karmaşık olduğu için genelde aşağıdaki gibi yazılır:

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Döngüler ( while , repeat , for , break )

Döngüler aynı kodu birçok kez çalıştırmanızı sağlar.

while Döngüsü

Şart sağlandıkça döngü sürdürülür. Kodlar çalıştırılmadan önce kontrol yapılır. Şart sağlanıyorsa kodlar çalıştırılır, şart sağlanmıyorsa döngü kırılır.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
repeat Döngüsü

Bu döngü belirlenen şart sağlanana kadar döndürülür, şart sağlanınca döngüyü kırar. Kodlar çalıştırılmadan önce kontrol yapılır. Şart her zaman sağlanırsa, döngü asla çalışmaz.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Sayısal for Döngüsü (numeric for loop)
for degisken = baslangic,bitis,adim do -- buradaki üç değerde sayı olmalıdır
-- kod
end

Kodlar verilen değişken değerinde çalıştırılmaya başlanıp, her seferinde adim değeri kadar arttırılarak bitis değerini geçene kadar çalıştırılır. adim değerini girmek zorunlu değildir, girmezseniz 1 yazılmış gibi davranılır. degisken döngü her gerçekleştiğinde güncellenir ve döngü kodları içerisinde kullanılabilir.

Ufak bir örnek;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tablolar için for Döngüsü (iterator for loop)
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tablolar için for döngüsü, verilen tablonun tüm elemanlarını döndürür ve size her eleman için anahtar ve deger karşılıklarını verir.

Ufak bir örnek;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol

break Terimi

break terimi, döngüleri kırmamızı/atlamamızı sağlar.


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
İç içe geçmiş döngülerde break terimi sadece en içteki döngüyü kırar, ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tablolar


Daha önceden ufaktan değindiğimiz bu değişken türü, içinde bilgi depolamamızı sağlar. Bilgiler anahtar = değer şeklinde saklanır ve daha sonra anahtarı kullanarak değeri elde edebilirsiniz. İçinde sakladıklarımız bilgiler bir nevi değişkendir.


Tablo Oluşturma;


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Bir tabloyu yazdırmaya çalıştığınızda türü ve benzersiz kimliği yazdırılır. Eğer tablonun bir elemanını yazdırmak istiyorsak; bunu ilerde göreceğiz
:)


Tabloları Kullanma;
Tablodaki anahtara değer vermek için tablo[anahtar] söz dizimini kullanabilirsiniz. Örneğin;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tabloda değeri olmayan bir anahtarı kullanmaya çalışırsanız nil ile karşılaşırsınız. Ufak bir örnek;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tablodan bir anahtar/değer çiftini silmek istiyorsanız, anahtarın değerini nil yapmanız yeterli. Ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tablodaki anahtar boolean( true , false ), nil veya NaN(yani 0/0) olamaz. Ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Tablodaki anahtarlar sadece köşeli parantez içerisinde sayı ve yazı olmak zorunda değildir. Değişkende olabilir. Tablodaki değişkene oluşturulduktan sonra değer verilecekse tablo.degiskenIsmi söz dizimi kullanılır, getirilirken de aynı söz dizimi kullanılır. Ufak bir örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Değişken ve anahtarlarınızı direk tablo oluştururkende ekleyebilirsiniz. Örneğin;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Eğer bir tablodaki tüm anahtar/değer çiftlerini kullanmak istiyorsanız for döngüsünü kullanabilirsiniz. Örnek;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Diziler Olarak Tablolar

Tablolardaki bilgilerin anahtar/değer olduğunu unutmayın. Ancak anahtar belirtmeden de değer girebilirsiniz. Bu durumda karşımıza dizeler çıkıyor. Anahtarı girilmeyen bir değer tabloya eklenirse, anahtarı index olur(yani sayı). Bu index tablodaki diğer indexlerin sayısından 1 fazladır. Örnek;


C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Gördüğünüz gibi hala anahtar/değer şeklinde kullanılıyor.

Ayrıca dizi ve anahtar/değer şeklindeki elemanları aynı tablo içine ekleyebilir ve kullanabilirsiniz. Örnek;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
# operatörünü kullanarak bir tablonun uzunluğunu öğrenebilirsiniz. Örnek;
Kod:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
# operatörü tablodaki tüm elemanların sayısını vermez! Sadece son tamsayı anahtarı verir. Eğer tamsayı anahtarlar ardışık değilse sonuç tanımsızdır. Bu yüzden aralıklı diziler için kullanılmamalıdır. Örnek;

C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Bir dizinin sonuna eleman eklemenin iki yolu vardır, örnek üzerinden anlatacağım;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
table.insert fonksiyonu ile diziye eleman eklerken sıra belirtmezseniz dizinin en sonuna eklenir(yukarıdaki koddaki gibi), ancak sıra belirtirseniz o sıraya(indexe) eklenir. Eğer eklendiği sıra(index)'da eleman varsa o eleman 1 index kaydırılır. Her kaydırma işleminden önce kaydırılacak indexe bakılır, index doluysa bir sonraki indexe kaydırılarak dizi tekrar sıralanır. Örnek üzerinden daha rahat anlayacağınızı umuyorum;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
table.remove fonksiyonu ise belirtilen indexteki elemanı kaldırır ve diğer indexteki elemanları bu boşluğu dolduracak şekilde kaydırır. Örneğin;
C++:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
Bir tabloyu fonksiyona, değişkene vb. geçirdiğinizde tablonun bir kopyası oluşmaz. Değişken veya fonksiyon orjinal tablo ile iletişime geçer. Örneğin;
Kod:
Lütfen, içeriği görmek için Giriş yap veya Kayıt ol
 

MIXAS

FS Kullanıcı

İtibar Puanı: 120

1 Kas 2020
91
120
33
eline sağlık kardaş her sabah uyandığımda 3 kere okuyacam
 
İfadeler: Mbl

EeC

FS Kullanıcı

İtibar Puanı: 12

2 Kas 2020
11
12
3
sabitleme isteriz
 

Yordi

FS Kullanıcı

İtibar Puanı: 18

28 Eki 2020
8
18
3
Eline sağlık, güzel anlatım olmuş fakat çok fazla temel kavramlar anlatılmış lua'yı fivem için kullanılacak kişiler için bence bi tık ilk etapta gerekmeyecek türden bilgiler. Eğer bundan sonraki konunda lua'yı nasıl fivem'de kullanılır tarzında bir rehber hazırlarsan fivem için luayı öğrenecek arkadaşlar için daha çok yararlı olabilir. Tekrardan eline sağlık. Mbl Mbl
 
İfadeler: Mbl

Tarik

Moderatör

İtibar Puanı: 84

28 Eki 2020
69
84
18
Python programlama diline çok benziyor emeğine sağlık.
 
İfadeler: Mbl

MIXAS

FS Kullanıcı

İtibar Puanı: 120

1 Kas 2020
91
120
33
Blackzone Blackzone her sabah uyandığında 3 kere oku
 
  • İpucu

Bu Konuyu Görüntüleyen Kullanıcılar