我正在使用这个lua链接:http://underpop.free.fr/l/lua/docs/programming-in-lua-first-edition.pdf,并对重命名功能感到困惑。我尝试了一下,但只收到如下错误消息。
> rename{old = "temp.lua", new = "temp1.lua"}
stdin:1: attempt to call global 'rename' (a nil value)
stack traceback:
stdin:1: in main chunk
[C]: in ?
> os.rename{old = "temp.lua", new = "temp1.lua"}
stdin:1: bad argument #1 to 'rename' (string expected, got table)
stack traceback:
[C]: in function 'rename'
stdin:1: in main chunk
[C]: in ?
此外,我正在学习Lua,因为我正在阅读一段用Lua编写的代码。我认为上面提供的链接(在lua第一版中进行编程)不是一个很好的教程。我还找到了参考菜单,但也不太喜欢。有人可以根据您的意见提供一个很好的教程吗?
编辑:我再次尝试了以下代码:
> function rename(arg)
>> return os.rename(arg.old, arg.new)
>> end
>
> rename{old = "temp.lua", new = "temp1.lua"}
这一次有效。
答案 0 :(得分:2)
stdin:1: attempt to call global 'rename' (a nil value)
此错误消息告诉您确切的问题是什么。
这是由于以下原因引起的:
rename{old = "temp.lua", new = "temp1.lua"}
rename
是一个零值。因此,Lua不知道该怎么办。为了避免此错误,您必须将重命名定义为可调用变量,例如。
让我只引用您认为不好的教程。
rename{old="temp.lua", new="temp1.lua"}
因此,我们仅使用一个参数定义重命名,并获得 该参数的实际参数:
function rename (arg) return os.rename(arg.old, arg.new) end