Lua中使用变量查找表元素失败,该如何解决?
问题分析与解决方法
你的问题核心是类型不匹配:表中存储的序号是字符串类型(比如"13"),而变量RN是数字类型(13)。Lua是强类型语言,字符串和数字的相等比较会严格区分类型,所以"13" == 13会返回false,导致变量匹配失败;你说直接写13能匹配,大概率是测试时的特殊情况(比如某条数据的序号恰好是数字类型),但实际表结构为字符串序号,必须统一类型再做比较。
两种解决方式
方式一:将数字变量转为字符串
把RN转换为字符串类型,保证比较时两边类型一致:local RN = 13 local target_rn = tostring(RN) -- 转成字符串"13" for _, v in ipairs(your_table) do if v[1] == target_rn then print(v[2]) -- 输出目标假名"su" break end end方式二:将表中的字符串序号转为数字
若表内序号都是可转换为数字的字符串,也可以把序号转成数字后和RN比较:local RN = 13 for _, v in ipairs(your_table) do if tonumber(v[1]) == RN then print(v[2]) -- 输出目标假名"su" break end end
额外优化建议
如果你的表是按序号顺序排列的数组,完全可以跳过遍历,直接通过索引访问,效率更高:
-- 假设表从第1项开始按顺序排列 local RN = 13 print(your_table[RN][2]) -- 直接获取第13项的假名
内容的提问来源于stack exchange,提问作者SMEEDLE
相关产品推荐
相关产品推荐

