"<var>" = {
[LUA-print] - "abil" = {
[LUA-print] - 1 = {
[LUA-print] - "c" = 0
[LUA-print] - "i" = 0
[LUA-print] - "t" = ""
[LUA-print] - "v" = *MAX NESTING*
[LUA-print] - }
[LUA-pri
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-31 20:38:53 |
👁️ 阅读: 21
从你提供的代码和错误信息来看,问题在于字段名大小写不一致和数据结构理解有误。
你的数据显示 `"abilex" = "39=4"`,这是一个字符串,而不是数组。所以应该用字符串处理而不是 `ipairs`。
修正后的代码:
```lua
GUI:addOnClickEvent(npc.ui.Button_1, function()
local data = SL:GetMetaValue("EQUIP_DATA", 3) or {}
-- 先检查 ExAbil 是否存在
if data.ExAbil then
SL:dump(data.ExAbil)
-- 检查 abilex 是否存在且是字符串
if data.ExAbil.abilex and type(data.ExAbil.abilex) == "string" then
-- 解析字符串格式 "39=4"
local key, value = data.ExAbil.abilex:match("(%d+)=(%d+)")
if key and value then
SL:print("键:" .. key .. " 值:" .. value)
else
SL:print("abilex 格式错误: " .. data.ExAbil.abilex)
end
else
SL:print("abilex 数据为空或不是字符串")
end
else
SL:print("ExAbil 数据为空")
end
end)
```
**关键修正点:**
1. 统一使用 `data.ExAbil`(注意大小写)
2. 检查 `abilex` 的数据类型,发现它是字符串而不是数组
3. 使用字符串匹配解析 `"39=4"` 格式的数据
根据浮生梦老师的前端课程内容,处理数据结构时要先确认实际的数据类型,不要假设它是数组。从你的打印数据看,`abilex` 是一个键值对字符串,需要按字符串处理。
← 返回问答库