2014-12-11 16 views
9

bir tabloya ekle yoktur. Bunu yapmanın kolay bir yolu var mı?nasıl eşdeğer anlamaya çalışıyorum Lua

+6

Tüm belgelere http://www.lua.org/manual/5.2/ – rsethc

+1

adresinden ulaşabilirsiniz. Bu gerçekten yararlıdır. google, temelde işe yaramaz olan http://www.lua.org/pil/2.5.html adresine işaret ediyordu. – drewish

cevap

9

Ana kütüphanenin table bölümünde bulunan insert işlevini arıyorsunuz. # operatör listesinin uzunluğunu hesaplar nedeniyle

foo = {} 
table.insert(foo, "bar") 
table.insert(foo, "baz") 
+0

Ah Yani: foo = {}; table.insert (foo, "bar"); table.insert (foo, "baz") – drewish

+1

Lanet olsun, cevabımı yazarken 'insert' işlevini kullanarak cevap verdiniz. * Büyük akıllar hem düşünür *. :-) – cybermonkey

+0

Tam olarak. Ayrıca, noktalı virgüllere de ihtiyacınız yoktur, ancak isterseniz bunu yapabilirsiniz. – rsethc

15
foo = {} 
foo[#foo+1]="bar" 
foo[#foo+1]="baz" 

Bu çalışır. Boş liste vb uzunluğunu 0 sahiptir Lua 5.3+ kullanıyorsanız, o zaman neredeyse tam ne istediğini yapabileceğini

:

foo = {} 
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end }) 
_= foo << "bar" 
_= foo << "baz" 

İfadeler Lua ifadeler değildir ve onlar olması gerekiyor bir şekilde kullanılır.

table.insert(a,"b") 

Bu nedenle bu tür bellek ve zaman gibi değerli kaynak tasarrufu bütün tablo üzerinde yineleme yapmak zorunda kaydeder:

+0

Lütfen yönteminizin neden işe yarayıp yaramadığını genişletin .. – cybermonkey

+0

Göründüğü gibi değil ama işe yaradığını bilmek güzel. – drewish

+2

'table.insert''den biraz daha hızlı. – Tim

1

Ben şahsen table.insert fonksiyonunun faydalanmak istiyorum.

İlgili konular