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

  • ELawshea

    ELawshea

    26 Mayıs 2008
  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013