gpt4 book ai didi

lua - 将字符串保存在 lua 表中

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

有人知道将键和值保存到表中的解决方案吗?我的想法行不通,因为表的长度是0,应该是3。

local newstr = "3 = Hello, 67 = Hi, 2 = Bye"

a = {}
for k,v in newstr:gmatch "(%d+)%s*=%s*(%a+)" do
--print(k,v)
a[k] = v
end

print(#a)

最佳答案

输出是正确的。

运行 for k,v in pairs(a) do print(k,v) end 检查表格的内容。

问题是长度运算符,默认情况下它不能用于获取任何表的元素数量,只能用于序列。

请引用Lua手册:https://www.lua.org/manual/5.4/manual.html#3.4.7

When t is a sequence, #t returns its only border, which corresponds tothe intuitive notion of the length of the sequence. When t is not asequence, #t can return any of its borders. (The exact one depends ondetails of the internal representation of the table, which in turn candepend on how the table was populated and the memory addresses of itsnon-numeric keys.)

仅当您知道 t 是一个序列时才使用长度运算符。这是一个具有整数索引 1,..n 且没有任何间隙的 Lua 表。

您没有序列,因为您只使用非数字键。这就是为什么 #a 是 0

获取任何表格的元素数量的唯一安全方法是对它们进行计数。

local count = 0
for i,v in pairs(a) do
count = count + 1
end

关于lua - 将字符串保存在 lua 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69722131/

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