Programming In Lua 评论

lua-users home
wiki

本页用于 Roberto Ierusalimschy 所著的《[Lua 编程]》一书的评论、勘误和讨论。

第二版评论

2.4 - 为什么字符串连接 (..) 是右结合的?请参阅 AssociativityOfConcatenation

2.5 - 关于“关联数组是可以用数字、字符串或语言中的其他任何值(除了 Nil)作为索引的数组”,以及 27.3 - p.252 - “注册表是一个常规的 Lua 表。因此,你可以用除 nil 之外的任何 Lua 值作为它的索引。”NaN 也可能出错——请参阅 LuaList:2008-03/msg00603.html

这大概是因为,根据定义,NaN != NaN,这违反了哈希表对键值可比性等价的要求。--ChrisRebert?

2.5 - #table.maxn 的计算复杂度是多少?--DavidManura

同样,这更多是一个语言问题,而不是书籍问题。在大多数情况下,# 的计算复杂度是 O(log Na),其中 Na 是表的数组部分的大小。table.maxn 的复杂度是 O(N),其中 N 是表分配的总大小,因为必须检查每个键。--RiciLake

27.3 - p.254 - 拼写错误:register -> registry (在“favor the environment over the register”中)

28.2 - luaL_newmetatable/luaL_getmetatable/luaL_checkudata 函数使用 C 字符串作为注册表的键。我宁愿只使用一个 lightuserdata 来实现这一点,或者将元表存储为 upvalue(更高效且不易出错)。我还避免将名称传递给 luaL_register,因为存在不必要的名称冲突风险,并且这会创建一个全局变量,类似于在 LuaModuleFunctionCritiqued 中批评的 module 函数。--DavidManura

第一版评论

(目前无)

其他评论

(目前无)


RecentChanges · preferences
编辑 · 历史
最后编辑于 2008 年 4 月 8 日晚上 9:56 (GMT) (差异)