Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Lua中使用C中的I++和++I_Lua - Fatal编程技术网

如何在Lua中使用C中的I++和++I

如何在Lua中使用C中的I++和++I,lua,Lua,有没有一种方法可以在Lua中使用i++而不是i=i+1?我认为这是可能的,因为Lua可以直接使用C函数。您必须修改解析器以接受++,因为它不是语法的一部分。不过,仅仅为了保存几个字符而创建一种新的不兼容的Lua方言是不值得的 为此定义某种函数在一般情况下也不会起作用,因为Lua中的函数是按值传递的,所以必须编写 i = incr(i) 这几乎违背了这一点,并且不允许您表达++i 也许你可以增加'variableName',扰乱调用函数的本地环境。。。但同样,这太复杂了,不值得麻烦,而且通常是一

有没有一种方法可以在Lua中使用i++而不是i=i+1?我认为这是可能的,因为Lua可以直接使用C函数。

您必须修改解析器以接受++,因为它不是语法的一部分。不过,仅仅为了保存几个字符而创建一种新的不兼容的Lua方言是不值得的

为此定义某种函数在一般情况下也不会起作用,因为Lua中的函数是按值传递的,所以必须编写

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++。无论如何,谢谢你。增量函数是一种解决方法