2011-10-21 19 views
18

Ktoś powiedział mi o przeciążeniu operatorów, ale nie jestem nawet pewien, jak bym to zrobił. Co ja próbuje zrobić to zmiana:Symulacja + = w Lua, czy to możliwe?

table["key"]=table["key"]+12345 

do

table["key"]+=12345 

Albo nawet przy użyciu funkcji, to byłoby wspaniale. Szukałem, ale nie mogę znaleźć odpowiedzi, więc mam nadzieję, że ktoś tutaj może skierować mnie do źródła lub być w stanie odpowiedzieć bezpośrednio na to pytanie. Jeśli zrobienie longhandowej formy tego będzie ostatecznie najkrótszą drogą, to przypuszczam, że się z tym uporam. Po prostu próbuję zapisać jak najwięcej klawiszy, ponieważ mam setki miejsc, w których to będzie realizowane. Dzięki!

+2

pamiętać, że można napisać 'table.key' zamiast' tabela ["klucz"] '. – lhf

+3

Ogólnie, jeśli chcesz dodać wartość do zmiennej Lua, po prostu zrób to po prostu. na przykład 'var = var + value'. Możesz to zrobić, ale nie oszczędzasz sobie pisania na klawiaturze. – Alex

Odpowiedz

14

Chcesz tego?

function increment(t,k,v) 
    t[k]=t[k]+(v or 1) 
end 

Użyj go w następujący sposób:

increment(table,"key",12345) 

lub, jeśli chcesz, aby podwyższyć o 1, po prostu jako

increment(table,"key")