永发信息网

lua求表长

答案:1  悬赏:40  手机版
解决时间 2021-11-12 00:00
  • 提问者网友:末路
  • 2021-11-11 11:13
lua求表长
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-11-11 11:45
你 #table_name 取的不一样,很可能是 table 不是 LUA顺序数组(索引从 1开始)
--- 获取数组长度
-- @param arr 指定的数组 type(arr) == "table"
function get_array_len(arr)
    return #arr
end

function dynamic_get_array_len(table_name)
    if _G[table_name] and type(_G[table_name]) == "table" then
        --return loadstring("return #"..table_name)()
        return #_G[table_name]
    end
    return print("输入参数 table_name 有误!")
end

-- 用lua编译器返回找全局变量,由于lua已经有_G标签,因此这样使用没有实际价值
function dynamic_get_array_len_useless(table_name)
    if _G[table_name] and type(_G[table_name]) == "table" then
        return loadstring("return #"..table_name)()
    end
    return print("输入参数 table_name 有误!")
end



----------------------------------------
-- rem
----------------------------------------

arr = {1,2,3,4}
tbl = {
    [0] = 0;
    [1] = 1;
    ["2"] = 2;
    [3] = 3;
}


print(get_array_len(arr))   -- 4
print(get_array_len(tbl))   -- 1

-- when arr 和 tbl 是全局变量
local table_name = io.read()    -- 输入的变量必须是全局变量名称
print(dynamic_get_array_len(table_name))   -- 可试验 dynamic_get_array_len_useless(table_name)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯