hsx8998283 发表于 5 天前

[Lua]保留字和关键字有什么区别?

本帖最后由 hsx8998283 于 2026-5-22 07:07 编辑

在 Lua 语言中,“关键字”和“保留字”这两个概念经常被混用,但严格来说它们是有区别的。

你可以这样理解它们的关系:所有的关键字都是保留字,但保留字不一定是关键字。 也就是说,“保留字”是一个更大的集合,它包含了“关键字”。

📖 两者的具体区别

*   关键字 (Keywords):
    指的是 Lua 语言中已经被赋予特定语法含义的单词。它们是目前正在使用的、构成 Lua 语法核心的命令。比如你熟悉的 if(如果)、for(循环)、local(局部变量)、end(结束)等,这 22 个单词就是 Lua 的关键字。

*   保留字 (Reserved Words):
    指的是被 Lua 官方“占坑”保留起来的单词。这些单词你不能拿来当作自己的变量名或函数名。保留字不仅包含了上面正在使用的 22 个关键字,通常还包含一些目前还没用、但预留给未来版本使用的单词,或者是 Lua 内部约定保留的特殊标识符。

📌 举个生动的例子

*   关键字就像是已经建好并投入使用的建筑物(比如学校、医院、商场),它们有明确的功能。
*   保留字就像是整个城市规划的“红线范围”。这个范围内不仅包含了已经建好的建筑物(关键字),还包含了一些目前还是空地、但已经被规划局圈起来的地方。这些空地(未来的保留字)虽然现在还没盖楼,但你不能随便去上面盖自己的房子(不能当变量名),因为官方未来可能会在这里盖新的公共设施。

💡 对初学者的实际影响

虽然在理论上有区别,但在你日常写 Lua 代码时,完全可以把它们当成一回事。

你只需要记住一个核心原则:Lua 官方规定的那些特殊单词(也就是那 22 个全小写的关键字),绝对不能用作你自己的变量名、函数名或表索引。

例如:
*   ❌ local if = 10 (绝对不行,if 是关键字)
*   ❌ local end = "结束" (绝对不行,end 是关键字)
*   ✅ local key = "钥匙" (完全可以,key 既不是关键字,也不在 Lua 的保留范围内)
*   ⚠️ local _VERSION = "1.0" (强烈不建议,虽然 _VERSION 不是关键字,但它属于 Lua 内部保留的命名格式,容易引发冲突)

hsx8998283 发表于 5 天前

看帖回帖是礼貌也能赚积分

woshifengmin 发表于 5 天前

这些都需要学习和积累,我想肯定还有些冷门的需要长期试错
页: [1]
查看完整版本: [Lua]保留字和关键字有什么区别?