1. 程式人生 > >Ubuntu安裝lua並基本使用

Ubuntu安裝lua並基本使用

最近因為要深入應用premake,所以得學點lua.

Ubuntu13.04下安裝命令:

apt-get install lua5.2 lua5.2-doc

版本是5.2.1, 不算最新,不過也很新了。官方參考在這裡:http://www.lua.org/manual/5.2/

這是動態語言,變數無需宣告其型別,變數的值就自帶了型別。一共有以下8種類型:

nilbooleannumberstringfunctionuserdatathread, and table

number是浮點數。

string是不可變型別,有點像Java。

userdata就是儲存C的struct. full userdata是記憶體有lua分配的userdata, 如果是記憶體有宿主語言(host)分配的,叫做light userdata.

thread這裡不是作業系統的執行緒,而是lua的一個協同程式(coroutines), 甚至可以在不支援執行緒的平臺上模擬出執行緒的特性。

table 一個關係陣列,可以用除nil之外的任何型別做索引(key), 包含了key和value, 可以用來表示陣列,符號表,集合,記錄,圖和樹等。真複雜,希望我不要用到。:)

table, function, thread和 full userdata 被使用時都是當作物件,變數只是引用它們的地址,並不拷貝它們。引數傳遞,函式的返回值和複製都是如此,不會深拷貝。

在lua官方站點找不到一個上手的例子,沒有helloworld。要的話就去買書?我不想成為專家,只是想完成我的premake構建而已。書就不必了。Google一下,找到一篇文章:

現在開始。用emacs建立hello1.lua檔案。

#!/usr/bin/lua

-- hello world lua program
print ("Hello World!")

然後執行命令:
codes/study/lua$ lua hello1.lua
Hello World!
成功了,現在學到一個lua函式print。

稍微改動一下,把字面常量換成變數,也work.

#!/usr/bin/lua

-- hello world lua program
str = "Hello World!"
print (str)


現在試一下if語句和字串比較
#!/usr/bin/lua

-- hello world lua program
str = "Hello World!"
print (str)

if str == "Hello World!" then
print "ok"
end