gpt4 book ai didi

lua - Lua 中的作业如何以左括号开头?

转载 作者:行者123 更新时间:2023-12-05 03:17:11 27 4
gpt4 key购买 nike

在阅读 Lua manual 时我遇到了这部分:


函数调用和赋值都可以以左括号开头。这种可能性导致了 Lua 语法中的歧义。考虑以下片段:

a = b + c
(print or io.write)('done')

语法可以用两种方式来看待这个片段:

a = b + c(print or io.write)('done')
a = b + c; (print or io.write)('done')

从示例中我可以理解函数调用可以以左括号开头:

a = b + c(print or io.write)('done')
^

但即使思考几个小时,我也无法弄清楚作业如何以左括号开头,以及它与上面的示例(第 2 行)有何关系。

谁能给我解释清楚,那句话的意思并举例说明?

最佳答案

看看The Complete Syntax of Lua .

赋值定义为

varlist ‘=’ explist

varlist定义为

varlist := var {‘,’ var}
var := Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name
prefixexp := var | ‘(’ exp ‘)’
exp := prefixexp

这与 functioncall 相同,因为它可以以 prefixexp 开头,而 prefixexp 可以以左括号开头。

functioncall ::=  prefixexp args | prefixexp ‘:’ Name args 

因此我们可以构建一个非常简单的示例:

a = {}
(a).b = false

关于lua - Lua 中的作业如何以左括号开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74242701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com