kodları denemek istersen: Linki görebilmek için
Kayıt olun yada
Giriş yapın.ipairs, listeleri döndürmek için kullanılır (liste de bir tablo ancak index&value mantığını kullanan tablodur)
not: liste = array
-- basit bir array
local array =
{
1,
"2",
true,
{wicky = "idiot"} -- obje yani key&value mantığını kullanan bir tablo
}
print(array)
-- table: 61A60C90
-- ^^^^^^^^ bu sayılara şimdilik takılma, array'in de bir tablo olduğunu kanıtlamış olduk
bu listedeki tüm verileri almak için ipairs kullanabilirsin
not: önceki kodun devamı
-- index = listedeki sırası, value = değeri
for index, value in ipairs(array)
do
print("sıra: "..index, "değer: "..value)
end
--[[ *Lua'da çoklu satır yorumu*
çıktı;
sıra: 1, değer: 1
sıra: 2, değer: 2
sıra: 3, değer: true
sıra: 4, değer: table: 61A60C90
]]
ancak ipairs, objelerde çalışmaz
not: obje de bir tablodur ancak objeler, listelerin aksine key&value mantığını kullanırlar
-- basit bir obje
local object =
{
cache = {},
online_players = -4,
server_description = "tr/tofaş/+4214214 araç/gelişmiş modifiye sistemi/türkiyenin en iyi sunucusu blabla"
}
for index, value in ipairs(object)
do
print("sıra: "..index, "değer: "..value)
end
-- hiçbir şey yazdırmayacak, çünkü ipairs sadece index'i (sırası) olan verileri döndürür, yani listelerde
objelerdeki değerleri döndürmek için abisi olan pairs'ı kullanabilirsin, pairs hem objelerde hem de listelerde çalışır
not: önceki kodların devamı
-- başta oluşturduğumuz basit array'i, pairs döngüsüne alalım
for index, value in pairs(array)
do
print("sıra: "..index, " değer: "..value)
end
--[[
çıktı;
sıra: 1, değer: 1
sıra: 2, değer: 2
sıra: 3, değer: true
sıra: 4, değer: table: 61A60C90
]]
-- key = listedeki ismi, value = değeri
for key, value in pairs(object)
do
print("isim: "..key, "değer:"..value)
end
--[[
çıktı;
isim: cache değer: table: yinebirkaçsayıveharf
isim: online_players değer: -4
isim: server_description değer: tr/tofaş/+4214214 araç/gelişmiş modifiye sistemi/türkiyenin en iyi sunucusu blabla
]]
eğer istersen objeyi ve listeyi beraber kullanabilirsin, tşk Lua
`
local very_important_table =
{
"wicky",
wicky = "eğweğwğe",
4,
5,
2414215124321,
["ULAN BANA BAK KETÖCÜ"] = false,
[false] = false, -- yeah, now it's big brain time
true,
"sa adminlik ne kadar?",
}
-- ipairs döngüsü
for i, v in ipairs(very_important_table)
do
print("sıra: "..i, "değer: "..v)
end
--[[
çıktı:
sıra: 1 değer: "wicky"
sıra: 2 değer: 4,
sıra: 3 değer: 5,
sıra: 4 değer: 2414215124321,
sıra: 5 değer: true,
sıra: 6 değer: sa adminlik ne kadar?
]]
-- pairs döngüsü
for k, v in pairs(very_important_table)
do
print("isim: "..k, "değer: "..v)
end
--[[
çıktı:
isim: 1 değer: wicky
isim: wicky değer: "eğweğwğe",
isim: 2 değer: 4
isim: 3 değer: 5
isim: 4 değer: 2414215124321
isim: ULAN BANA BAK KETÖCÜ değer: false,
isim: false değer: false
isim: 5 değer: true
isim: 6 değer: sa adminlik ne kadar?
]]
mantıklarını daha iyi anlamak için tabloları anlamalısın, tabloları anladıktan sonra bu döngüleri çok kolay anlarsın
not: ipairs ve pairs bir fonksiyon olduğu için döngüleri çok az yavaşlatabilirler, ufak bir hızlandırma yapmak istersen;
-- sadece ipairs yerine kullanabilirsin, pairs yerine kullanamazsın
-- i = index, v = value
-- 1'den başla ve listenin uzunluğuna kadar say
for i=1, #array -- # işareti bir listenin ve ya string'in uzunluğunu döndürür, objelerde çalışmaz
do
local v = array[i] -- listenin *i* sırasındaki değeri al
print(v) -- ve yazdır
end
--[[
1,
2,
true,
table: yinesayılar
]]
basit hız testi:
10000x
isim | hız |
ipairs | 807ms |
pairs | 637ms |
for | 631ms |
for;
Linki görebilmek için
Kayıt olun yada
Giriş yapın.eksikleri olabilir, pek dikkat etmedim ama yeteri kadar açıklamışımdır diye umuyorum
son not: döngülerdeki 'index, value' yerlerine özel karakter içermemek şartıyla istediğini yazabilirsin, onlar da bir değişkendir aslında