LUA 语言易混点

Posted 大隐书局

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

 

以上是关于LUA 语言易混点的主要内容,如果未能解决你的问题,请参考以下文章

python内置函数易混点

java基础易混点

log函数的易混点

Activity与Fragment易混点归纳

js中局部变量和全局变量的易混点

C++:指针小白易混点