在Lua中有没有办法使用i++
而不是i = i + 1
?
我认为这可能是因为Lua可以直接使用C函数。
如何在Lua中使用I ++和++ I从C中获取
0
A
回答
2
如果您想避免输入,请查看您的编辑器是否可以为您扩展++i
至i = i + 1
。
如果您只是想要一种不涉及修改Lua源代码的黑客方式,那么表格会让您通过引用传递,而元方法可以用作表达式或语句。
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)
。
3
您必须修改解析器才能接受++
,因为它不是语法的一部分。不过,为了节省一些字符而创建一个新的不兼容的Lua方言并不值得。
定义某种此功能将在一般在Lua也不行,因为函数是通过按值,所以你必须写
i = incr(i)
这几乎连败点,并且不管怎样都不允许你表达++i
。
也许你可以做incr 'variableName'
,并与调用函数的本地环境混淆......但同样,这只是过于复杂,不值得麻烦,并且通常都是可想象的各种可怕想法。
相关问题
- 1. c#从使用循环获取值像combobox [i],i ++
- 2. 如何在C++中使用复数“i”
- 3. C++:如何在函数中使用%i?
- 4. i = i ++ + ++ c的输出差异;和i = ++ i + C++;
- 5. 如何通过JMX获取网络I/O和磁盘I/O
- 6. out [i] = *(a_mat + i)在C中做什么?
- 7. 如何在Numpy/Theano中表达c [i,j,k] = a [i,j] * b [i,k]?
- 8. 如何从showDialog(i)调用showDialog(i)? (Android)
- 9. Perforce命令行:如何在“p4 client -i”中使用-i标志?
- 10. 在cassandra 0.8.2 sstableleader中如何使用-i或--ignore选项?
- 11. 如何让“i + = x”作为“i ++”使用?
- 12. Increment ++ i,i ++和i + = 1
- 13. i = i + j有什么区别;和i + = j;在C语言?
- 14. C#中++ i和i ++之间有任何性能差异吗?
- 15. 如何使用(i)
- 16. C++如何使用“循环(n)”来表示“for(int i = 0; i <n; i ++)”?
- 17. C中的“a +++ i”等于“(a ++)+ i”
- 18. 如何在项目中使用i-reports?
- 19. 在C/C++为x [I] *值Y [i ++]总是等于x [I] * Y [I]
- 20. C++ array.at(i)和array [i]的性能
- 21. 如何在Python中理解i&-i?在Python中的位操作
- 22. i(i == -i && i!= 0)的值在Java中返回true
- 23. “i ++”如何比“i = i + 1”更高效?
- 24. C++ Lua从Lua表中获取值
- 25. lua中的I/O操作陷入
- 26. CFINPUT - 如何从输入值中排除O,o,I,i
- 27. 如何从sed -i
- 28. 如何从Linux中的netstat -i获取队列字段?
- 29. 如何使用文件I/O C++
- 30. i和i = i ++ in for循环java
'++'不是C函数,它是一个运算符。所以Lua能够使用C函数并不适用。 –
http://stackoverflow.com/questions/7855525/simulate-in-lua-is-it-it-possible可能的重复。 – lhf
不一定 - 我很好奇在Lua中是否有任何hacky方法实现'i ++'。不管怎么说,还是要谢谢你。不知何故,“增量”功能是一种方式 –