Имитировать = в Lua, возможно ли это?

#lua #operator-overloading

#lua #перегрузка оператора

Вопрос:

Кто-то рассказал мне о перегрузке операторов, но я даже не уверен, как я начну это делать. То, что я пытаюсь сделать, это изменить:

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

в

 table["key"] =12345
 

Или даже с помощью функции, это было бы замечательно. Я искал, но не могу найти ответ, поэтому я надеюсь, что кто-нибудь здесь сможет направить меня к источнику или сможет ответить на вопрос напрямую. Если в конечном итоге это будет самый короткий способ сделать это, я полагаю, я буду придерживаться этого. Я просто пытаюсь сохранить как можно больше нажатий клавиш, поскольку у меня есть сотни мест, где это было бы реализовано. Спасибо!

Комментарии:

1. Обратите внимание, что вы можете написать table.key вместо table["key"] .

2. Обычно, если вы хотите добавить значение в переменную Lua, вы просто делаете это от руки. например var = var value . Вы могли бы использовать свою собственную функцию для этого, но вы не собираетесь экономить много времени на вводе.

Ответ №1:

Вы этого хотите?

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

Используйте его следующим образом:

 increment(table,"key",12345)
 

или, если вы хотите увеличить на 1, просто как

 increment(table,"key")