LUA 语言易混点

 1 --代码:
 2 
 3 tab1 = { key1 = "val1", key2 = "val2","val2", "val3" ,}
 4 for k, v in pairs(tab1) do
 5     print(k .. " - " .. v)
 6 end
 7  
 8 tab1.key1 = nil
 9 for k, v in pairs(tab1) do
10     print(k .. " - " .. v)
11 end
12 
13 --运行结果:
14 1 - val2
15 2 - val3
16 key1 - val1
17 key2 - val2
18 1 - val2
19 2 - val3
20 key2 - val2

以上说明了 lua的数组(table)是一个可以检索的数组,可以检索字符的,同时具备了json和c语言的数组,应该要比链表的效率要好点(不能快速检索,必须依靠多叉树),另一方面 table没有0,至少从1开始。两个没有有检索的普通字符,将按照先后顺序,1、2排序参照上图。print 字符串和 数字等用‘,’隔开或者使用“..”隔开,唯一区别就是后者是可字符串紧密结合的,前者有很大空间。

table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。

-- table_test.lua 脚本文件
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
    print(k .. " : " .. v)
end
结果:
10 : 33
key : value
 

for循环的不同 k说明定位,如“KEY”,排列在前面的是检索,v是对应的数值,没有特殊检索的都是数字检索,比如 10 、 1、2.....

-- table_test2.lua 脚本文件
local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
    print("Key", key)
end

结果:
Key    1
Key    2
Key    3
Key    4

从上述可以看到,优化了print函数。

function匿名函数

-- function_test2.lua 脚本文件
function testFun(tab,fun)
    for k ,v in pairs(tab) do
        print(fun(k,v));
    end
end


tab={key1="val1",key2="val2"};
testFun(tab,
function(key,val)--匿名函数
    return key.."="..val;
end
);

结果:
key1 = val1
key2 = val2

 

原文地址:https://www.cnblogs.com/polar-lights/p/8503917.html