SORU
19 AĞUSTOS 2010, PERŞEMBE


Neden Lua hayır " var;devam" deyimi?

Son birkaç ay içinde Lua ile çok uğraşıyorum, ve ben gerçekten özellikleri çoğu gibi ama hala aralarında bir şey kaçırıyorum

  • Neden continue var mı?
  • Geçici çözümler ne için vardır?

CEVAP
19 AĞUSTOS 2010, PERŞEMBE


Dili sözlü kapsam yönetme biçimi goto continue ve daha fazlası ile ilgili sorunlar yaratır. Örneğin,

local a=0
repeat 
    if f() then
        a=1 --change outer a
    end
    local a=f() -- inner a
until a==0 -- test inner a

Bildirgesi local a döngünün içinde vücut maskeleri dış değişken adında a ve kapsamı yerel uzanır durumu until deyimi çok koşulu test içteki a.

Eğer continue varsa, anlamsal değişkenleri durumda kullanılan kapsamına girer sonra geçerli olmak yasak olmalı. Bu kullanıcı için belge ve derleyici zorlamak için zor bir durumdur. Bu konu etrafında çeşitli öneriler tartışıldı, döngü repeat ... until tarzı continue izin vermeme gibi basit bir cevabı da vardır. Şu ana kadar, hiçbiri yeterince ikna edici bir senaryo dilinde onlara yer almak zorunda.

Geçici çözüm, genellikle continue bir idam edilmesine neden olacak bu durumu tersine çevirmek ve bu durumda döngü vücudun geri kalanı toplamak için. Bu yüzden, aşağıdaki döngü

-- not valid Lua 5.1 (or 5.2)
for k,v in pairs(t) do
  if isstring(k) then continue end
  -- do something to t[k] when k is not a string
end

yazılı olabilir

-- valid Lua 5.1 (or 5.2)
for k,v in pairs(t) do
  if not isstring(k) then 
    -- do something to t[k] when k is not a string
  end
end

Yeterince açık ve döngü işlemi kontrol, özenle hazırlanmış kağıtları saklardı bir dizi olmadığı sürece genellikle bir yük değil.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010
  • tsweeney79

    tsweeney79

    21 Ocak 2008