如何在Lua中使用C中的I++和++I
有没有一种方法可以在Lua中使用i++而不是i=i+1?我认为这是可能的,因为Lua可以直接使用C函数。您必须修改解析器以接受++,因为它不是语法的一部分。不过,仅仅为了保存几个字符而创建一种新的不兼容的Lua方言是不值得的 为此定义某种函数在一般情况下也不会起作用,因为Lua中的函数是按值传递的,所以必须编写如何在Lua中使用C中的I++和++I,lua,Lua,有没有一种方法可以在Lua中使用i++而不是i=i+1?我认为这是可能的,因为Lua可以直接使用C函数。您必须修改解析器以接受++,因为它不是语法的一部分。不过,仅仅为了保存几个字符而创建一种新的不兼容的Lua方言是不值得的 为此定义某种函数在一般情况下也不会起作用,因为Lua中的函数是按值传递的,所以必须编写 i = incr(i) 这几乎违背了这一点,并且不允许您表达++i 也许你可以增加'variableName',扰乱调用函数的本地环境。。。但同样,这太复杂了,不值得麻烦,而且通常是一
i = incr(i)
这几乎违背了这一点,并且不允许您表达++i
也许你可以增加'variableName',扰乱调用函数的本地环境。。。但同样,这太复杂了,不值得麻烦,而且通常是一个可怕的想法。如果你想避免键入,看看你的编辑器是否可以为你将++i扩展到i=i+1 如果您只是想要一种不涉及修改Lua源代码的黑客方式,那么表将通过引用传递给您,_call meta方法可以用作表达式或语句
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的值现在需要i0 ++不是一个C函数,它是一个运算符。所以Lua不能使用C函数。可能是的重复。不一定-我很好奇是否有任何黑客方法可以在Lua中实现I++。无论如何,谢谢你。增量函数是一种解决方法