SORU
12 Mart 2009, PERŞEMBE


Nasıl değer Lua bir tablo duyuyor musun?

Son zamanlarda Lua kodu da başka bir şey gibi yazdım:

local a = {}
for i = 1, n do
   local copy = a
   -- alter the values in the copy
end

Belli ki, bu değişkenleri isimsiz bir tablo değerlerini değil, kendileri için başvurular tutun beri yapmak Lua içinde benim istediğim değildi. Bu açıkça Programming in Lua ama unutmuştum ortaya koydu.

Bu yüzden soru yerine copy = a a değerleri bir kopyasını almak için ne yazmam gerekiyor?

CEVAP
13 Mart 2009, Cuma


Tablo kopya birçok potansiyel tanımları var. Kopyalama veya metatables, vb paylaşmak görmezden gelmek istemediğinizi basit veya derin kopyalamak istediğiniz bağlıdır. Herkesi tatmin edebilecek tek bir uygulama yok.

Bir yaklaşımın, yeni bir tablo oluşturmak ve tüm anahtar/değer çiftleri çoğaltmak için

function table.shallow_copy(t)
  local t2 = {}
  for k,v in pairs(t) do
    t2[k] = v
  end
  return t2
end

copy = table.shallow_copy(a)

Kullanmanız gerektiğini unutmayın ipairs Tek tablo bir alt kümesi üzerinde yineleme beri ipairs yerine pairs tuşları (örn. ardışık pozitif tamsayı tuşları artan sırayla tek tek başlayarak).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • ModNation Racers H.Q.

    ModNation Ra

    31 Ocak 2010
  • Tutorials Junction

    Tutorials Ju

    1 Ocak 2014