2011-10-21 9 views
18

Alguien me había contado sobre la sobrecarga de los operadores, pero ni siquiera estoy seguro de cómo comenzaría a hacer eso. Lo que estoy tratando de hacer es cambiar:Simular + = en Lua, ¿es posible?

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

en

table["key"]+=12345 

O incluso utilizando una función, eso sería maravilloso. He buscado, pero no puedo encontrar una respuesta, así que espero que alguien aquí me pueda dirigir a la fuente o pueda responder la pregunta directamente. Si hacer la forma a mano, en última instancia, va a ser la forma más rápida de hacerlo, entonces supongo que me quedaré con eso. Solo trato de guardar tantas teclas como sea posible, ya que tengo cientos de lugares donde esto se implementaría. ¡Gracias!

+2

Tenga en cuenta que se puede escribir 'table.key' en lugar de' tabla ["clave"] '. – lhf

+3

Generalmente, si desea agregar un valor a una variable Lua, simplemente hágalo a mano. p.ej. 'var = var + value'. Podría hacer funcionar su propia función para hacerlo, pero no se ahorrará mucho tipeo. – Alex

Respuesta

14

¿Quieres esto?

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

utilizarlo como sigue:

increment(table,"key",12345) 

o, si se desea incrementar en un 1, simplemente como

increment(table,"key") 
Cuestiones relacionadas