2011-10-21 13 views
18

Qualcuno mi aveva detto di sovraccaricare gli operatori, ma non sono nemmeno sicuro di come iniziare a farlo. Quello che sto cercando di fare è il cambiamento:Simula + = in Lua, è possibile?

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

in

table["key"]+=12345 

O anche utilizzando una funzione, che sarebbe meraviglioso. Ho cercato, ma non riesco a trovare una risposta, quindi spero che qualcuno qui possa indirizzarmi alla fonte o essere in grado di rispondere direttamente alla domanda. Se fare la forma a mano lunga di esso sarà in definitiva il modo più breve per farlo, allora suppongo che resterò con quello. Sto solo cercando di salvare quante più sequenze di tasti possibile, dal momento che ho centinaia di posti dove questo sarebbe stato implementato. Grazie!

+2

Si noti che è possibile scrivere 'table.key' invece di' [ "chiave"] 'tavolo. – lhf

+3

In genere se si desidera aggiungere un valore a una variabile Lua, basta farlo a mano. per esempio. 'var = var + value'. Puoi eseguire la tua funzione per farlo, ma non ti risparmierai molto a scrivere. – Alex

risposta

14

Vuoi questo?

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

usarlo come segue:

increment(table,"key",12345) 

o, se si vuole incrementare da 1, semplicemente come

increment(table,"key")