lua遇到的错误

table插入一个

local t = {a=1, b=2, c=3}
-- table.insert(t,"d=4")  --相当于插入一个字符串,并不是hash
local m = {}  --直接赋值m.d报错,需要先声明m为一个table
m.d=4
t["d"] = 5   --t.d和t["d"]一个意思,但是前面不能加local,否则报错
print(t.d)
print(m.d)

----------
5
4
[Finished in 0.1s]

if语句的用法

local x = 10
--单个if分支
if x > 0 then
    print(true)
end


--两个if分支:if-else
if x > 0 then
    print(true)
else         --if之后需要加then,else之后
    print(false)
end


--多个分支
if x == 0 then
    print(0)
elseif x > 0 then  --elseif之后要加then,否则报错
    print(true)
else              --else之后不能加判断语句,否则报错
    print(false)   --不能是elseif,也不能加then
end

true
true
true
[Finished in 0.1s]

lua的几种迭代器

标准库提供了几种迭代器,包括用于迭代文件中每行的(io.lines)、 迭代table元素的(pairs)、迭代数组元素的(ipairs)、迭代字符串中单词的(string.gmatch)等。

local id_list = string.gmatch( args.role_auto_id,”(%d+)” )

lua面向对象

local str = "abcde"
print("case 1:", str:sub(1, 2))
print("case 2:", str.sub(str, 1, 2))
print("case 3:", str.sub(str, 1, 2))

----------
case 1: ab
case 2: ab
case 3: ab
[Finished in 0.1s]
local arr1 = {1, 2, 3, [5]=5}
print(#arr1)               -- output: 3


local arr2 = {1, 2, 3, nil, nil}
print(#arr2)               -- output: 3


local arr3 = {1, nil, 2}
arr3[5] = 5             --和上面的例子相同,table的长度遇到nil停止
print(#arr3)               -- output: 1


local arr4 = {1,[3]=2}
arr4[4] = 4   --相当于a[3] = 2,suiyou 长度等于arr4[4] = 4的长度,换成arr4[5] = 4就把不行了
print(#arr4)               -- output: 4
----------
3 3 1 4

----------

do
    local arr4 = {1,[4]=2}
    arr4[5] = 4

    print(#arr4)
    print(table.maxn(arr4))
end
---------------------
1
5
[Finished in 0.1s]

如果你要删除一个数组中的元素,请使用remove函数,而不是用nil赋值。

表的赋值添加

local a = {a = "b"}
print(a.a)
a = {b = "c"}   --这里无论是否加local都相当于把table覆盖了,因为table相当于一个变量
print(a.a)
print(a.b)
----------------
b
nil
c
local a = (2==2) 
print(type(a))  --a是boolean类型
if a then
    print(type(2==2))
    print("asdas")
end
结果:
boolean
boolean
asdas
[Finished in 0.2s]
if (2==2) == true then  -- 等于true,但是类型是boolean
    print("aaa")
end
if type(2==2) == true then
    print("aaa")
end

你可能感兴趣的:(lua)