Lua Trivia Answers

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


RecentChanges · preferences
编辑 · 历史
最后编辑于 2019 年 4 月 13 日上午 3:54 GMT (差异)