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 wordand | break | do | else | elseif |
end | false | for | function | if |
in | local | nil | not | or |
repeat | return | 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)