此第一版为 Lua 5.0 而写。虽然在很大程度上仍然适用于后续版本,但有一些差异。
第四版针对 Lua 5.3,可在 Amazon 和其他书店购买。
购买本书,您还将帮助 支持 Lua 项目。
用 Lua 编程 | ||
第二部分。表和对象 第 11 章。数据结构 |
假设您要列出程序源中使用的所有标识符;您需要以某种方式从列表中筛选出保留字。一些 C 程序员可能会倾向于将保留字集表示为字符串数组,然后搜索此数组以了解给定单词是否在该集合中。为了加快搜索速度,他们甚至可以使用二叉树或哈希表来表示该集合。
在 Lua 中,表示此类集合的高效且简单的方法是将集合元素作为表中的索引。然后,您只需索引该表并测试结果是否为 nil,而不是在表中搜索给定元素。在我们的示例中,我们可以编写以下代码
reserved = { ["while"] = true, ["end"] = true, ["function"] = true, ["local"] = true, } for w in allwords() do if reserved[w] then -- `w' is a reserved word ...(由于 while 是 Lua 中的保留字,因此我们不能将其用作标识符。因此,我们不能编写
while = 1
;相反,我们使用 ["while"] = 1
表示法。)
您可以使用辅助函数来构建集合,从而获得更清晰的初始化
function Set (list) local set = {} for _, l in ipairs(list) do set[l] = true end return set end reserved = Set{"while", "end", "function", "local", }
版权所有 © 2003–2004 Roberto Ierusalimschy。保留所有权利。 |