【发布时间】:2021-04-14 20:48:20
【问题描述】:
我很高兴得知,从 Lua 5.4 开始,Lua 支持常量 (const) 和待关闭 (close) 变量!但是,在测试这些关键字后,它们似乎根本没有做任何事情。我编写了以下代码来对特性进行采样,以便更好地掌握它们的确切用法:
function f()
local const x = 3
print(x)
x = 2
print(x)
end
f()
function g()
local close x = {}
setmetatable(x, {__close = function() print("closed!") end})
end
g()
我将文件命名为 constCheck.lua 并使用 lua constCheck.lua 运行它。输出如下:
3
2
我期待我对f() 的调用会出错,或者至少它会打印两次3,但它似乎重新分配x 完全没有问题。此外,我期待对g() 的调用打印出“关闭!”当x 在函数末尾离开作用域时,但这并没有发生。我找不到很多这些关键字用法的例子。我是否正确使用它们?它们有效吗?
注意:lua -v => Lua 5.4.0 Copyright (C) 1994-2020 Lua.org, PUC-Rio
【问题讨论】:
-
下一次,如果您想知道如何正确使用 Lua 功能,最好参考 Lua 参考手册。猜测语法从来都不是一个好主意。
-
是的,我试过了,但我只是不习惯 Lua 手册的组织方式。索引中对常量的唯一引用是关于 C API,当我在手册正文中搜索“const”时,我得到了很多关于“construct”的结果,所以我尝试通过添加空格来缩小搜索范围("const"),但是对 const 关键字的唯一引用后跟一个逗号,所以我再次主要得到了关于 C API 的结果。当时不知道是本地申报专属功能,也没想到去那里查。
标签: lua scope constants local-variables