Lua Döngü için
Hey kodlama dünyasına yeni Lua öğrenmeye çalışıyorum. Bu noktada benim görevim döngü için nasıl. Sayılar açısından ben bunu çözdüm fakat bu isimler açısından anlamaya. İsim listesi doğru uzanan bir döngü oluşturmak istiyorum. Şu ana kadar öğrendiklerimi şudur:
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
Ama öyle olmuyor, terminali her zaman sadece 1, 2, 3... birisi ben yanlış yapıyorum bana ne söyleyebilir? listeler başka şeyler denedim
CEVAP
Sorun basittir:
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
Bu kod ilk olarak global bir değişken names
adlı bildirir. Daha sonra döngü için bir başlangıç. Döngü beyan ederyerelsadece names
denemeyecek kadar olur değişken; değişken daha önce names
ile tanımlanmış olması tamamen alakasız. Döngü içinde names
her türlü kullanım için başvuracaktıryerelbir, küresel değil.
Döngü için döngü iç kısmı names = 1
names = 2
ve son olarak names = 3
ile çağrılacak diyor. Döngü beyan edersayaçbu son birinci sayı sayar ve iç kod çağırır her değer için bir kez sayar.
Aslında istediğim şöyle bir şey oldu:
names = {'John', 'Joe', 'Steve'}
for nameCount = 1, 3 do
print (names[nameCount])
end
[] Sen Lua bir tablo üyelerine erişim nasıl sözdizimi. Lua tabloları göster "anahtarları""". değerleri Dizinizi hangi artış otomatik olarak tamsayı türü anahtarları oluşturur. Yani key ile ilgili "Joe" Tablo 2 (Lua endeksleri her zaman başında 1).
Bu nedenle, 3, 1'den önemli olan döngü için bir ihtiyaç. Sayısı değişkeni tablodaki eleman erişmek için kullanın.
Ancak, bu bir kusur vardır. Seni listeden unsurlardan biri kaldırırsanız ne olur?
names = {'John', 'Joe'}
for nameCount = 1, 3 do
print (names[nameCount])
end
Şimdi, nil
sonuçları var olmayan bir tablodan değerler erişmeye çalışıyor çünkü John Joe nil
, alıyoruz. Bunu önlemek için, 1'den saymaya ihtiyacımız varuzunluğutablo:
names = {'John', 'Joe'}
for nameCount = 1, #names do
print (names[nameCount])
end
#
uzunluğu operatör. Tablolar ve dizeleri, ya da uzunluğu dönen çalışır. Şimdi, ne kadar büyük ya da küçük names
olursa olsun, bu her zaman işe yarayacaktır.
Ancak, öğeleri bir dizi boyunca yineleme yapmak için daha kolay bir yolu var:
names = {'John', 'Joe', 'Steve'}
for i, name in ipairs(names) do
print (name)
end
ipairs
bir liste üzerinde yineleme Lua standart bir işlevdir. for
döngü bu tarz döngü için yineleyici, yineleyici işlevi bu tür kullanır. i
değeri dizideki giriş dizinidir. name
değeri, dizin değeri. Temelde sizin için ayak işi yapıyor.
döngü numaralama üzerinde yineleme içi...
'kullanarak parantez amacı ne ({}...
Sözdizimi döngü sırasında tek satırlık...
Neden diğerleri üzerinde bazı platform...
Nasıl bağlantılı liste bir döngü algıl...