在Lua中,a=Account:new{balance=0}是如何工作的,还是打字错误?

在Lua中,a=Account:new{balance=0}是如何工作的,还是打字错误?,lua,Lua,在Lua网站上,有这段代码 function Account:new (o) o = o or {} -- create object if user does not provide one setmetatable(o, self) self.__index = self return o end a = Account:new{balance = 0} a:deposit(100.00) 行a=Account:new{balance=0}不应该写为a=Account

在Lua网站上,有这段代码

function Account:new (o)
  o = o or {}   -- create object if user does not provide one
  setmetatable(o, self)
  self.__index = self
  return o
end

a = Account:new{balance = 0}
a:deposit(100.00)

a=Account:new{balance=0}
不应该写为
a=Account:new(balance=0)
,因为它是一个函数,所以括号被替换为括号吗

Account:new{balance=0}
Account:new({balance=0})
的语法糖

也就是说,如果传递给函数的唯一参数是表构造函数或字符串文字,则可以省略括号

您将看到的最常见的地方是:

这在以下部分中进行了讨论:

形式为
f{fields}
的调用是
f({fields})
的语法糖;也就是说,参数列表是一个新表。形式为
f'string'
(或
f“string”
f[[string]]]
)的调用是
f('string')
的语法糖;也就是说,参数列表是单个文本字符串


Account:new(balance=0)
将是一个语法错误(您不能在那里放等号)。@immibis此代码直接从Lua网站复制。您在Lua网站上哪里看到
Account:new(balance=0)
?@immibis在我问题第一行的网站第五段之后。否,包含
帐户的新{balance=0}
local env = require 'env'