2011年9月17日 星期六

[Lua Note] 1 - Getting Started


Chunks

Lua就和一般的Script一樣,沒有所謂的main function,也不需要分號";"'當成一個statement的結束,分號可有可無,不過我還是習慣性的加上去,就像數學運算式的括號,很可能你想的和你寫出來的意思不同,導致錯誤,以下的範例都是一樣的意思
 
    a = 1
    b = a*2
    
    a = 1;
    b = a*2;
    
    a = 1 ; b = a*2
    
    -- "--"是註解的意思
    a = 1   b = a*2    -- 很醜,但還是合法

您可以在提示符號下執行lua,lua [ options ] [ script [ args ] ]
prompt> lua 會進入interactive 模式。
prompt> lua -la -lb會執行a.lua和b.lua,-l相當於require的意思,lua就像一般的computer language一樣,允許您寫自己的library,並且透過require載入。
lua也提供另外dofile這個function,讓您測試您寫的lua檔,dofile和require最大的不同是,require只會載入一次,而dofile可以重覆載入,所以拿來驗證lua檔就非常適合了。



Global Variables

在Lua中,沒有特別宣告local就是Global Variables,用到沒有宣告的變數,其值就是nil
 
function scope1()      -- step 4.
    function scope2()  -- step. 8
        print(A)               -- step. 9 印出A=20
        local A=30         -- step. 10又宣告一個變數A(範圍更小)
        print(A)               -- step. 11 印出該範圍的A, 即30
    end
    print(A)           -- step 5. 印出 10
    local A=20     -- step 6. 新的A=20, Global的A一樣不變
    scope2()        -- step 7.
     print(A)          -- step 12. 印出這個範圍的A = 20
end

print(A)                -- step 1. 印出 nil
A=10                   -- step 2. A=10
scope1()             -- step 3.
print(A)                -- step 13. 印出這個範圍的A = 10
os.exit()



Some Lexical Conventions

和一般的language一樣,會有所謂的key word,以下是lua的key word
while
and break do else elseif
end false for function if
in local nil not or
repeatreturn then true until

lua是case-sensitive就是有分大小寫的。 變數x和變數X是不同的。
在Lua中的註解 --是單行,像C中的//,而--[[ --]]就像C的/* */屬於多行註解。好用的地方是,只要在"--[["前面多一個"-"就等於取消整個註解,超好用。
 
--[[
    print(10)         -- no action (comment)
--]]

---[[
    print(10)         --> 10
--]]


The Stand-Alone Interpreter

lua會將command-line的參數存到陣列arg中,arg[0]存放執行的script,arg[-1]存放script檔名的前一個參數,arg[1]..arg[n]就是依序存放後面的參數。


參考資料:Programming in Lua (first edition)




沒有留言:

張貼留言

熱門文章