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

  • dcigs

    dcigs

    9 EYLÜL 2006
  • karneson

    karneson

    23 Temmuz 2006
  • Peyton

    Peyton

    28 Aralık 2008