参数隐式“arg”在Lua中的函数中不起作用。

我在使用函数中的隐式参数 arg 时遇到了问题。

这段代码无法工作。文档http://www.lua.org/pil/5.2.html应该可以工作。

function listar_um (...)
  for i,v in ipairs(arg) do
    print("usando args " .. arg[i])
  end
end
listar_um("Olá", 1, "Dois")

这段代码可以通过声明变量 lista 来工作。

function listar_um (...)
  lista = {...}

  for i,v in ipairs(lista) do
    print("não usando args " .. lista[i])
  end
end
listar_um("Olá", 1, "Dois")

为什么第一个例子无法工作?

测试脚本: http://www.codeshare.io/IPwRJ 在线执行脚本:http://www.compileonline.com/execute_lua_online.php

谢谢。

点赞
用户1009479
用户1009479

第一版的 PiL (Programming in Lua) 介绍了 Lua 5.0。arg 在 Lua 5.0 中可用,但自 Lua 5.1 以后就被删除了。

你可以在 Lua 5.0 参考手册 中找到,但在 Lua 5.1 参考手册 中却没有。

在线解释器 (http://www.compileonline.com/execute_lua_online.php) 使用的版本是 Lua 5.2,你可以通过 print(_VERSION) 来查找。

编辑:经过一些测试,似乎 arg 在 Lua 5.1 中仍然可用,但在 Lua 5.2 中不起作用。

2014-09-04 11:57:56