lua 递归遍历table所有元素

参考:Lua数据文件与序列持久化_昔拉天使的博客-CSDN博客_lua 序列化

 

--~ package.path= string.gsub( package.path , 'LuaBin',rootPath)
if output~=nil then output:ClearAll() end
package.cpath=";.\\?.dll;\
.\\?51.dll;\
F:\\Program Files\\Lua\\5.1\\?.dll;\
F:\\Program Files\\Lua\\5.1\\?51.dll;\
F:\\Program Files\\Lua\\5.1\\clibs\\?.dll;\
F:\\Program Files\\Lua\\5.1\\clibs\\?51.dll;\
F:\\Program Files\\Lua\\5.1\\loadall.dll;\
F:\\Program Files\\Lua\\5.1\\clibs\\loadall.dll;"

package.path=    ";.\\?.lua;\
F:\\Program Files\\Lua\\5.1\\lua\\?.lua;\
F:\\Program Files\\Lua\\5.1\\lua\\?\\init.lua;\
F:\\Program Files\\Lua\\5.1\\?.lua;\
F:\\Program Files\\Lua\\5.1\\?\\init.lua;\
F:\\Program Files\\Lua\\5.1\\lua\\?.luac;"
--~ output: ClearAll(  )

package.path= string.gsub( package.path , '\n',"")
package.cpath= string.gsub(package.cpath , '\n',"")


function aryTostr(...)
    local rst=''
    for i ,k in pairs (...) do
        rst=rst..'.'..k
    end
    return rst
end

function aryContStr( stack , needlexd)

    for i,k in pairs(stack) do
        local tmp=string.find(k,needlexd )
        if tmp~=nil then
            return true
        end
    end
    return nil
end



function travTab_Process( key0 , val_X )
    if type(val_X)~='table' then return end
    if heapXX[key0] then return end
        if heapXX[key0]==nil then
            heapXX[key0]=val_X
            for i,k  in pairs(val_X) do
                if type(k)=='table'  then
                    table.insert(address , i)
                    print(aryTostr(address) )
--~                     print('   ',i,k)
                    travTab_Process(i,k )
                    table.remove(address)
                end
                print('   ',i,k)
            end
            return
        end
    return
end

function travTab(key_init , val_init )
    address={key_init} heapXX={}
    if type(val_X)~='table' then
        print( key_init)
        travTab_Process( key_init, val_init)
    end
    return
end

--~  require'pl'
--~  require'std'
--~  require'iuplua'
--~ require 'socket'
travTab( '_G',_G)

print("over: ",os.time() )

 

posted @ 2023-02-25 19:35  陳亞林  阅读(137)  评论(0)    收藏  举报