【Lua】入門

Lua的值和類型

Table:

a={}

a[1] = 12.4
a["hello"] = 20
a[12.4] = "aaa"

print(a.hello,a[1],a[a[1]])

結果:
20 12.4 aaa

還可以這樣定義:

a={
    ["name"] = 2,
    [5] = true,
}

print(a.name,a[5])

結果:
2 true

注意:
Lua的數組從1開始。a[1]是第一個

函數

1.函數類型值

--傳統定義
function add( a,b )
    return a + b
end

--函數類型值 定義
plus = function ( a,b )
    return a + b
end

ap = plus

print(add(1,2),plus(3,4),ap(5,6))

結果:
3 7 11

2.多返回值以及多變量賦值


a,b = 1,2,3
b,a = a,b
function cal( a,b )
    return a,b,a*b
end


print(cal(a,b))

結果:
2 1 2

表達式

  • 與或非分別對應:
    and
    or
    not

  • 字符串拼接

    print("Hey".."Boy")
    

    結果HeyBoy

  • 儘量使用local

    function f1( )
        a = 10
    end
    
    function f2( )
        b = 100
    end
    
    function f3( )
        local c = 1000
    end
    
    f1()
    f2()
    f3()
    
    print(a,b,c)
    

    結果:
    10 100 nil
    注意:
    Lua沒有自增所以沒a++這種表達式

流程控制

  • if語句
function com( a,b )
    if a>b then
        return a
    elseif a==b then
        return "equal"
    else
        return b
    end
end
  • while語句
local i=0
while i<10 do
    print(i)
    i = i+1
end
  • for語句
--等價 for i=0,5,1 do
for i=0,5 do
    print(i)
end

結果:
0
1
2
3
4
5

a = {
    ["small"] = 1,
    [10] = false,
    [1] = 20,
    [2] = 30,
}
print("pairs")
--pairs迭代器:遍歷所有
for k,v in pairs(a) do
    print(k,v)
end
print("ipairs")
--ipairs迭代器:遍歷數組部分不遍歷映射
for k,v in ipairs(a) do
    print(k,v)
end
--以上遍歷都是隨機順序

結果:
pairs
2 30
small 1
10 false
1 20
ipairs
1 20
2 30

文件一:foo.lua


local class={}

function class.foo(a,b)
    return a + b
end

return class

文件二:

--加載foo.lua
local c = require("foo")

print(c.foo(1,2))

結果:3

Lua的系統庫

  • table的方法:
local t={}

for i=1,3 do
    table.insert(t,i)
end
table.remove(t,2)

for k,v in pairs(t) do
    print(k,v)
end

結果:
1 1
2 3

  • 映射的刪除:

    local t={}
    
    t.a = 1
    t.b = 2
    
    t.a = nil
    
    for k,v in pairs(t) do
        print(k,v)
    end
    

    結果:
    b 2

  • 查看數組長度
local t1 = {5,1,3,4}
local t2 = {"hello"}
print(#t1.."\n"..#t2)

結果:
4
1
- 其他系統庫函數

local a = tonumber("3.14")
local b = tostring(120)
print(a,type(a))
print(b,type(b))
print(string.format("hi %d",2))

結果:
3.14 number
120 string
hi 2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章