【发布时间】:2020-04-08 18:14:00
【问题描述】:
我是 Lua 新手,所以在 lua 代码中创建和访问类时。我收到以下错误
尝试索引全局“BankAccount”(一个函数值)
下面的代码块供参考。
-- lua 中的类
-- bank account is a table
BankAccount = {
account_number = 0,
holder_name = "",
balance = 0.0
}
function BankAccount:deposit(amount)
self.balance = self.balance + amount
end
function BankAccount(amount)
self.balance = self.balance - amount
end
function BankAccount:new(t)
t = t or {}
setmetatable(t,self)
self.__index= self
return t
end
-- instantiate an object of the class BankAccount
johns_account = BankAccount:new({
account_number = 12345678,
holder_name = "John",
balance = 0.0
})
print(johns_account.account_number)
谁能解释我犯了什么错误或我遗漏了什么?
【问题讨论】:
-
下次打开你的脚本问问自己,为什么Lua认为
BankAccount指的是一个函数值。搜索单词 BankAccount。你的第一个命中将是:BankAccount = {}so 它指的是一个表,稍后你会发现function BankAccount(amount) end等同于BankAccount = function(amount) end所以哇,现在BankAccount指的是一个函数值!这里出了点问题,你不是故意的。那么缺少什么?当出现错误时,请始终检查与该错误相关的变量是否具有它们应该具有的值并找出原因 -
@Piglet 感谢您的评论。我明白了这个错误。 ☺
标签: function class oop lua lua-table