在Lua中列出对象字段。

我想创建一个非常简单的面向对象程序。如何列出对象字段(如所有客户名称)?下面的代码有什么问题?for k, v in ipairs()不起作用。

 do

    local Account = {}

    function Account:Current()
        return self.B
    end

    function Account:Deposit(D)
        self.B = self.B + D
    end

    function Account:Withdraw(W)
        self.B = self.B - W
    end

    function BankAccount(Id, Name, N)
        return {B=N,Current=Account.Current,Deposit=Account.Deposit,Withdraw=Account.Withdraw,AccountName=Name,AccountId=Id}
    end
end

local Id = 1
local CustomerDatabase = {}

while true do
    print("选择一个选项或按q退出")
    print("1. 创建新客户条目")
    print("5. 列出当前客户数据库")

    local Option = io.read("*line")
    if Option == "q" then break
    elseif Option == "1" then
        print("输入姓名")
        local Name = io.read("*line")
        print("输入初始金额")
        local InitialAmount = io.read("*line")
        BankAccount(Id, Name, InitialAmount)
        table.insert(CustomerDatabase, BankAccount)
        Id = Id + 1
    elseif Option == "5" then
        for k, v in ipairs(CustomerDatabase) do
            print(k .. v.AccountName)
        end
    end
end
点赞
用户1009479
用户1009479

这里的BankAccount是一个函数,您要将其插入到表中。这就是为什么v.AccountName无效,函数无法索引的原因。

您应该添加账户对象:

local account = BankAccount(Id, Name, InitialAmount)
table.insert(CustomerDatabase, account)

注:保留原本的markdown格式,需要将原文中的英文单引号反引号替换为中文反引号。

2014-03-09 14:57:28