将Lua中的表格(tbl)中的键值对进行一些算术计算。
2013-10-17 17:39:46
收藏:0
阅读:104
评论:1
我有一个如下表格:
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
它返回我正在尝试对字段“alive”进行算术运算。我在这里错过了什么?像往常一样,非常感谢回答这个问题!
编辑: 不要在评论中进行评论,我将在此处添加额外的信息。
我发布的 mafiadb 数据库就是真正的数据库。它只被削减到了两个玩家,而不是我目前列出的 150 多个玩家。它的结构很简单:
mafiadb = {
Playername = {
alive = 0
mafia = 0
vigilante = 0
doctor = 0
police = 0
citizen = 0
}
}
再添加几百个玩家名称,就完成了。
至于错误消息,精确的消息是:
attempt to perform arithmetic on field 'alive' (nil value)
所以...我不确定问题出在哪里。在我的第一个代码中,有 sortmaf,它完美地工作,但突然间,在我尝试进行算术运算时,它找不到 v["alive"] 作为一个值?如果我只把 v["alive"] 单独放在那里,它突然间就被找到了,不再是 nil。我希望这能够更清楚地说明一些问题。
原文链接 https://stackoverflow.com/questions/8276821
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
我认为这看起来就像是一个简单的拼写错误。
你的 150 个字符中的一些写得不太好 - 可能它们没有 "alive" 属性,或者写错了,或者不是一个数字。尝试这样做:
for k,v in pairs(mafiadb) do if type(v.alive) ~= 'number' then print(k, "没有正确的 alive 属性") end end
这将打印出 "坏"字符的名称。