我有一個表,如下所示:的Lua:在對於k做算術,V成對(TBL)循環
mafiadb:{"Etzli":{"alive":50,"mafia":60,"vigilante":3,"doctor":4,"citizen":78,"police":40},"Charneus":{"alive":29,"mafia":42,"vigilante":6,"doctor":14,"citizen":53,"police":33}}
有多個嵌套表,但我只是想保持簡單目前。
我運行下面的代碼中提取一定值(我在做基於這樣的價值觀的有序列表):
sortmaf={}
for k,v in pairs(mafiadb) do
sortmaf[k]=v["mafia"]
end
這就是我運行代碼之一。我遇到的問題是,它不會出現,你可以在表循環中進行算術運算。我嘗試過:
sortpct={}
for k,v in pairs(mafiadb) do
sortpct[k]=(v["alive"]*100)/(v["mafia"]+v["vigilante"]+v["doctor"]+v["citizen"]+v["police"])
end
它返回,我試圖對字段「活着」做算術。我在這裏錯過了什麼?像往常一樣,我很欣賞任何回答這個問題的考慮!
編輯: 而不是評論評論,我要在這裏添加額外的信息。
我發佈的mafiadb數據庫是真正的數據庫。這只是簡化爲兩名球員,而不是我目前列出的150多名球員。它的結構簡單如下:
mafiadb = {
Playername = {
alive = 0
mafia = 0
vigilante = 0
doctor = 0
police = 0
citizen = 0
}
}
添加幾百個玩家名稱,並且您擁有它。
至於錯誤消息,確切的消息是:
試圖在現場進行算術「活着」(零值)
所以......我不知道是什麼問題是。在我的第一個代碼中,有一個使用sortmaf的代碼,它可以很好地工作,但是突然間,當我嘗試進行算術時,它找不到v [「alive」]作爲值。如果我只將v [「活着」]本身,它突然發現,並不是零。我希望這個更清楚一點。
除了附加的'''附近的'Charneus','mafiadb'和你發佈的代碼一起工作的很好。你當然可以在'for'循環中做所有事情(唯一的例外是從你正在迭代的表中添加或刪除元素)。循環代碼看起來很好,我猜你正在給它一些非數字數據。你應該發佈真正的'mafiadb'和確切的錯誤信息,以獲得更好的幫助 – sbk