Есть ли способ использовать i++
вместо i = i + 1
в Lua?
Я думаю, что это возможно, так как Lua может напрямую использовать функции C.
Как использовать i ++ и ++ i из C в Lua
ответ
Если вы хотите избежать ввода текста, посмотрите, может ли ваш редактор расширять ++i
до i = i + 1
.
Если вам просто нужен хакерский способ, который не включает в себя модификацию исходного кода Lua, тогда таблицы получат вас по ссылке, а мета-метод __call
может использоваться как выражение или оператор.
function num(v)
local t = {v or 0}
function postinc(t, i)
local old = t[1]
t[1] = t[1] + (i or 1)
return old
end
setmetatable(t, {__call=postinc})
return t
end
i = num()
print(i()) -- print(i++)
i() -- i++
print(i(0)) -- print(i)
Написание кода, как это никогда не стоит, получить доступ к «значение» из i
теперь требует i(0)
.
Вам нужно будет изменить парсер, чтобы принять ++
, так как он не является частью синтаксиса. Однако создание нового несовместимого диалекта Lua для сохранения нескольких персонажей не стоит того.
Определение какой-то функции для этого не будет работать вообще либо, так как функции в Lua являются передача по значению, так что вы должны были бы написать
i = incr(i)
, который довольно много поражений и не позволяет вам выразить ++i
в любом случае.
Возможно, вы могли бы сделать incr 'variableName'
и испортить местную среду вызывающей функции ... но опять же, это просто сложно, не стоит проблем и вообще ужасная идея во всех отношениях.
- 1. Приращение ++ i, i ++ и i + = 1
- 2. Diff Между p [i], i [p] и * (p + i), * (i + p) в C/C++
- 3. i ++, i = i + 1 и i + = 1, который быстрее?
- 4. C++ differencebetween --k [i] и k [i] -
- 5. Разница между i ++ и ++ i?
- 6. В чем разница между i ++ и ++ i?
- 7. Какой метод инкремента следует использовать в C#? ++ i или i ++?
- 8. C# I/O vs C I/O
- 9. Оценка приращения прихода i + i ++ + i + i ++;
- 10. Компиляция выражения ++ i + ++ i + ++ i?
- 11. Как использовать комплексное число «i» в C++
- 12. C++: как использовать% i в функции?
- 13. Что оценит i ++ + i ++ в C++ 17?
- 14. В чем разница между i ++ и ++ i?
- 15. jQuery i ++ и i-- проблемы
- 16. разница между int * i и int * i
- 17. В чем разница между ++ i и i ++?
- 18. Что делает [i] = * (a_mat + i) в C?
- 19. Как работает следующее выражение i = + i * i ;?
- 20. В чем разница между i- и -i в C#
- 21. В чем разница между i- и i-1 в C?
- 22. Когда использовать 'i' vs. 'str [i]'?
- 23. Разница между i ++ и i = i + 1 в терминах атомарности
- 24. Еще один i = i ++
- 25. Сравнение скорости между i = i + 1 и ++ i
- 26. Почему ++ i эффективнее i ++?
- 27. В mysql как использовать приращение i = 1, i ++?
- 28. Понимая больше о i ++ и i = i + 1
- 29. Анализ разницы между i + = 1 и i = i + 1
- 30. Почему Math.sqrt (i * i) .floor == i?
'++' не является функцией C, это оператор. Поэтому Lua, способный использовать функции C, неприменим. –
Возможный дубликат http://stackoverflow.com/questions/7855525/simulate-in-lua-is-it-possible. – lhf
не обязательно - мне любопытно, есть ли какой-либо хакерский способ достижения 'i ++' в Lua. Спасибо, в любом случае. Функция 'increment' - это способ как-то –