1
回答
关于Lua Table 通过泛型for 逆向的一个问题
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

在Lua程序设计中,有这样的一个例子:

    days = {"Sunday", "Monday", "Thusday", "Wednesday", "Thursday", "Friday", "Saturday"}

    revDays = {}

    for k, v in pairs(days)

    do

        revDays[v] = k

    end

    for k, v in pairs(revDays)

    do

        print(revDays[k])

    end

为什么我通过泛型for打印revDays时会得到这样的结果:

    Saturday

    Tuesday

    Wednesday

    Friday

    Sunday

    Thursday

    Monday


Lua
举报
共有1个答案 最后回答: 5年前

首先,days的性质是数组

for k, v in pairs(days)

k是days中元素的数字索引,可以理解成数组下标,v才是"sunday"等的元素。

revDays[v] = k

就吧revDays中键值为v的赋值为k

所以最后revDays变成{ Sunday = 1, Monday = 2 ...以此类推}

这时候revDays的性质变成了键值对

对于键值对来说,添加的顺序并不重要,内部的实现中会生成自定义的顺序,所以

for k, v in pairs(revDays)

的结果和days的顺序不一致。

lua中的table有两种性质,一种是数组,一种是键值对。

顶部