SORU
30 EYLÜL 2011, Cuma


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
1 EKİM 2011, CUMARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • Film Riot

    Film Riot

    16 NİSAN 2006
  • SellerDp

    SellerDp

    27 EKİM 2009