# Lua是一種輕量、小巧的腳本語言,用標准C語言編寫並以源碼形式開發。設計的摸底是為了嵌入到其他應用程序中,從而為應用程序提供靈活的拓展和定制功能。 # Lua安裝 # 官網:https://www.lua.org # 1.官網下載源碼 wget https://www.lua.org/ftp/lua-5.4.3.tar.gz # 2.編譯安裝 cd lua-5.4.3 make linux test make install # 3.如果test失敗,需要安裝 yum install -y readline-devel # 4.驗證是否安裝成功 lua -v # lua的語法和C/c++語法非常相似 # 交互式啟動lua。直接輸入lua命令就進入了lua的交互命令行 # 可以直接輸入print('hello world') # 腳本式。創建的文件必須以.lua為后綴 # 執行腳本:lua abc.lua # 或者你可以直接指定執行腳本 #! /usr/local/bin/lue # 以下語法都兼容 a=1 b=a+2 a=1; b=a+2; a=1;b=a+2; a=1 b=a+2 # 單行注釋 --print('hello world') # 多行注釋 --[[ print('hello world') --]] # 關鍵字: and break do else elseif end false for function if in local nil not or repeat return then true until while goto # 運算符 # 算數運算符: +加 -減 *乘 /除 %取余 ^乘冥 -負號 # 關系運算符 10==10 true 10~=10 false 不等於 20>10 true 20<10 false 20>=10 true 20<=10 false # 邏輯運算符 and 邏輯與 A and B or 邏輯或 A or B not 邏輯非 取反 A=false B=true A and B false A or B true # 其他運算符 .. 兩點用來鏈接兩個字符串:"hello ".."world" 輸出:hello world # 井號是醫院運算符,返回字符串或者表的長度:#"hello" 輸出:5 # 全局變量&局部變量 # 在lua語言中,全局變量無需聲明即可使用。在默認情況下,變量總是認為是全局的,如果為提前賦值,默認為nil。 # 你想聲明局部變量需要用到local關鍵字 # 如: local a = 100; print(a) # lua數據類型 nil(空,無效值) boolean(布爾,true/false) number(數值) string(字符串) function(函數) table(表) thread(線程) userdata(用戶數據) # 你可以直接用type去查看 print(type(nil)) :string print(type(true)) :boolean print(type(1*1*1.1)) :number print(type("hello world")) :string print(type(io.stdin)) :userdata print(type(print)) :function print(type(type)) :function print(type(type{})) :table print(type(type{type(x)})) :string # 多行字符串的定義 html = [[ <html> <title> </title> </html> ]] # table類型 # 使用例子: a = {} arr = {"TOM","JERRY"} :數組的訪問arr[1],lou下標是從1開始 b = {} b['x'] = 1 b['y'] = 2 :字典的訪問:b['y'] arr = {"TOM",x=10,"Jerry",y=20} # 如何獲取上面的值 TOM:arr[1] 10:arr['x'] 或者 arr.x Jerry:arr[3] 20:arr['y'] 或者 arr.y # function類型 # 聲明函數 function f(a,b) print(a,b) end # 調用: f() :nil nil f(2) :2 nil f(2,6) :2 6 f(2,6,8) :2,6 # 函數參數隨便你怎么傳 # 可變參數&返回值 function add(...) a,b,c=... return c,b,a end a,b,c=add(1,2,3) # if then elseif else控制語句 function testif(a) if a>0 then print("a是正數") end end function testif(a) if a>0 then print("a是正數") else print("a是負數") end end function testif(a) if a<0 then print("a是負數") elseif a==0 then print("a是0") elseif a>=1 and a<=10 then print("a是1到10之間") else print("else") end end # while循環 function testwhile() local i = 1 while i<=10 do print(i) i=i+1 end end # repeat循環 until條件滿足才退出循環 function testrepeat() local i=10 repeat print(i) i=i-1 until i < 1 end # for循環 for i=1,100,10 do print(i) end arr = {"Tom", "jerry", "Rows"} for i,v in ipairs(arr) do print(i,v) end # 輸出,i是索引,v是值: 1 Tom 2 jerry 3 Rows arr = {"Tom", x="test", "jerry", "Rows"} for i,v in pairs(arr) do print(i,v) end # 輸出,i是索引,v是值: 1 Tom 2 jerry 3 Rows x test