Lua 琐事答案

lua-users home
wiki

答案 A

这取决于 a.b 是什么!

a = {}; b = {}; c = {}
print(a,b,c) --> a,b,c

a.b = function(...) print(...) end
a:b(c) --> a,c

mt = {}
mt.__call = function(...) print(...) end
a.b = setmetatable(b, mt)
a:b(c)   --> b,a,c
a.b(a,c) --> b,a,c (identical)

此外,ac 和全局环境表可能会调用元方法,这些元方法也会调用函数。

答案 B

它打印
2       3       2
而不是
1       4       6
正如你作为 C 程序员所期望的那样!这仅仅是因为第三行中的 -- 符号不被解释为变量递减,而是被解释为注释的开始... ++ 运算符在 Lua 中也不存在,但在这里不会产生错误,因为它在注释中!

请注意,问题中缺乏语法高亮实际上是故意的。

返回 LuaTrivia


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2019 年 4 月 13 日上午 9:54 GMT (差异)