gpt4 book ai didi

json - Lua 表 - 两个具有相同键的条目

转载 作者:行者123 更新时间:2023-12-04 17:33:25 24 4
gpt4 key购买 nike

我不确定如何,但我们设法创建了一个具有两个完全相同的键的表。执行 for 时循环 pairs我们得到的表和打印键和值:

1    true
1 true

我们认为这可能是不同类型或什么的问题,所以我们决定将其转换为 json(我们使用 Corona SDK 和内部 json 模块)。

结果相当惊人:
"ourTable" : { "1" : true, "1" : true }

我们将其存储在一个文件中以检查值,以及 "1" 的两个十六进制值是 31 .

所以另一个测试:将该 json 转换为 lua 表和...与以前相同的结果:具有相同键的两个条目。

我以前从未见过这样的事情,老实说,我不知道如何检测和预防这种情况。
我们已经使用 lua 和 corona 几年了,这是我们第一次检测到这样的事情,但它可能以前发生过,我们没有检测到。这可能会导致一些令人难以置信的糟糕结果。

Corona SDK 使用 Lua 5.1。

我们将此表 json 编码存储在一个文件中。重新启动应用程序后,文件再次加载,它只包含一个条目!现在......这个表只包含“id”和 bool 值,两个值完全相同,但我想知道如果值不同会发生什么,哪一个会保留?我现在想到了很多场景。

我无法重现此问题,但我们会做什么:
  • 使用 json 读取文件
  • 将json解码成lua表
  • 在表中添加/更新条目,只需 tab[key] = value
  • 保存文件

  • 编辑:
    好吧,现在重现这个问题:
    local d = {true} 
    d["1"]=true
    for k,v in pairs(d) do
    print(k,v)
    end


    1 true
    1 true

    最佳答案

    实际上,在我添加了重现问题的方法之后,很明显发生了什么。
    table 变得混杂起来。

    当我这样做时:

    for k,v in pairs(d) do 
    print(k,v, type(k))
    end

    这一切都说得通:
    1   true    number
    1 true string

    我们现在唯一的问题是 json Corona SDK 中的模块已更改 1编号为 "1"字符串。

    关于json - Lua 表 - 两个具有相同键的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062793/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com