2015-05-09 40 views
0

在Lua中有没有办法使用i++而不是i = i + 1 我认为这可能是因为Lua可以直接使用C函数。 如何在Lua中使用I ++和++ I从C中获取

+4

'++'不是C函数,它是一个运算符。所以Lua能够使用C函数并不适用。 –

+0

http://stackoverflow.com/questions/7855525/simulate-in-lua-is-it-it-possible可能的重复。 – lhf

+0

不一定 - 我很好奇在Lua中是否有任何hacky方法实现'i ++'。不管怎么说,还是要谢谢你。不知何故,“增量”功能是一种方式 –

回答

2

如果您想避免输入,请查看您的编辑器是否可以为您扩展++ii = 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',并与调用函数的本地环境混淆......但同样,这只是过于复杂,不值得麻烦,并且通常都是可想象的各种可怕想法。

相关问题