Lua遊戲開發(三)---Lua語言學習(上)

JuggLee發表於2015-12-01

1.全域性變數和區域性變數

require("app.senes.other") --呼叫app\senes目錄下other.lua檔案,可以使用other.lua檔案裡的資源
a = 3 --全域性變數,可供其他lua檔案呼叫
local b = "hello world" --a.lua檔案的全域性變數,不可供其它lua檔案呼叫,類似於c裡的static變數
function main()
    print(a) --3
    funa(a)
    print(a) --9

    c = 4 --全域性變數,同a
    do
        local a = 2 --區域性變數
        print(a) --2
    end

    print(a) --9
end

function funa()
    a = 9
end

2.資料型別判斷及型別轉換
a = 3
local b = "hello world"

function main()
    c = false
    print(type(a)..","..type(b)..","..type(c)..","..type(funa)) --number,string,boolean,function

    local d = "4"
    local e = "5"
    print(d+e) --9
    print(a+d) --7
   print(a..d) --34 ".."連結符號,可以連線number,也可以連線string
end

function funa()
    a = 9
end


3.函式:可以像其他資料型別number,string一樣賦值傳參。

function main()
    funca() --funca
    funcb(1) --funcb
    print(funcc(3,4)) --funcc 7
    a,b,c = funcd() --a=8,b=10,c=12
    a,b,c = funcd(nil,1) --a=4,b=10,c=8
end

--無引數無返回值
function funca()
    print("funca")
end
--有引數無返回值
function funcb(a)
    print("funcb"..a)
end
--有引數有返回值
function funcc(a,b)
    print("funcc"..a..b)
    return a+b
end
--引數預設值多返回值
function funcd(a,b,c)
    a = a or 3
    b = b or 5
    c = c or 7
    return a+b,a+c,b+c
end
--不定引數
function funce(...)
    local num = select("#",...) --num為傳入的引數的個數
    local a,b,c = ... --a,b,c為傳入的前三個引數,如果沒有三個,則為nil
    
    --將傳入的不定引數當作陣列來處理,v即挨個得到的入參
    for k,v inpair({...}) do
        print(k,v)
    end
end





4.運算子

function main()
    a,b = 7,2 --多值賦值
    print(a/b) --3.5
    print(math.floor(a/b)) --3 向下取整
    print(math.ceil(a/b)) --4 向上取整
    print(math.round(a/b)) --4 四捨五入
    print(7%2) --1
    print(b^3) --8 冪

    c = "7"
    print(a==b) --false
    print(a~=b) --true

    print(a>c) --exception 型別不同,異常
    print(a==c) --false
    print(a~=c) --true

    d = false
    print(not d) --true
    e = (a>b) and true or false --true 三目運算子

    s = {3,5,nil,8,9}
    print(#s) --5 獲取個數 

    a,b = b,a --交換值
end

5.分支迴圈語句

function main()
    a,b,c = 1,2,10
    if a>b then
        print("a>b")
    elseif a<b then
        print("a<b")
    else
        print("a=b")
    end

    while a<c do
        print("a="..a)
        a = a+1 --a++, a+=1這些寫法lua不支援
    end

    repeat
        print("b="..b)
        b = b+1
    until b>c

    for i = 1,funca,2 do --從1到10,步長為2,不寫的話步長預設為1; funca在這裡只會呼叫一次
        print(i)
        if i == 3 then
            break
        end
       
        --lua沒有continue關鍵字,會有歧義,可以用repeat...until替代
        repeat
            if i == 3 then
                break
            end
        until true
    end

end

function funca()
    print("call funca")
    return 10
end

相關文章