Lua 为什么要考虑表构造函数;表达方式;?

Lua 为什么要考虑表构造函数;表达方式;?,lua,Lua,从表面上看,变量赋值和表构造函数做了类似的事情。那么,为什么表构造函数被认为是“表达式”,而变量赋值被认为是“语句”?计算表1 表构造函数中的“赋值”(=符号)只是用于初始化表中字段的语法-它们不是变量赋值。语法看起来与=相似,但这只是表面上的相似:不要混淆这两种不同的语法结构 考虑一下,如果Lua使用与JavaScript相同的语法,那么 t = {x: 2} -- invalid syntax, for argument 很明显,x:2不是一个变量赋值,而是一个字段初始值设定项。当然,

从表面上看,变量赋值和表构造函数做了类似的事情。那么,为什么表构造函数被认为是“表达式”,而变量赋值被认为是“语句”?

计算表1

表构造函数中的“赋值”(
=
符号)只是用于初始化表中字段的语法-它们不是变量赋值。语法看起来与
=
相似,但这只是表面上的相似:不要混淆这两种不同的语法结构

考虑一下,如果Lua使用与JavaScript相同的语法,那么

t = {x: 2}   -- invalid syntax, for argument
很明显,
x:2
不是一个变量赋值,而是一个字段初始值设定项。当然,Lua语法规定它是以
t={x=2}
的形式编写的,但这种区别仍然存在。有两种不同的构造,
{x=2}
表构造不会导致副作用或变量赋值


1如果不能为以后使用分配表,那就没有多大意义了!由于只有表达式可以出现在赋值的右侧,因此表构造函数必须是表达式,以便可以将结果表(即值)赋值给变量(或传递给函数等)


还要注意的是,Lua拥有比C语言更多的语言。

如果表构造函数不是表达式,则不能将它们分配给任何对象。语句
variable\u name={}
将表达式(在本例中为表构造函数)的结果分配给变量


表是值,就像数字、字符串、函数、用户数据以及Lua中的其他所有值一样。表达式计算为值。因此,表的构造是一个计算为值的表达式。

您是否在谈论表中的“变量赋值”(不是实际的变量赋值),或者你说的是实际的变量赋值吗?变量赋值一般来说,我的困惑在于这两个语句实际上都是:a={1};a=1表构造函数本身:{1}是一个表达式。正如您有用地指出的,{x=1}也被认为是一个表达式。现在对我来说有意义了,谢谢。@RossCharette很高兴它有意义:)