在Lua中,a=Account:new{balance=0}是如何工作的,还是打字错误?
在Lua网站上,有这段代码在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
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'