Lua基礎
Lua介紹
特點:輕量、小巧。C語言開發。開源。
設計的目的:嵌入到應用程序當中,提供靈活的擴展和定制化的功能。?lua+nginx,lua+redis。
環境安裝
windows上安裝lua:
檢查機器上是否有lua
C:\Users\cpf>lua
'lua' 不是內部或外部命令,也不是可運行的程序?或批處理文件。
C:\Users\cpf>
打開官網:lua.org

點擊下載:

得到文件:LuaForWindows_v5.1.5-52.exe?雙擊,一直下一步。
驗證安裝結果:
C:\Users\cpf>lua
Lua?5.1.5 ?Copyright?(C)?1994-2012?Lua.org,?PUC-Rio?>?print("hello world")
hello?world >
C:\Users\cpf>
linux安裝lua
官網:The Programming Language Lua

步驟:
?
[root@localhost /]#?mkdir?lua?[root@localhost?/]# cd?lua/[root@localhost?lua]# curl?-R?-O?http://www.lua.org/ftp/lua-5.4.4.tar.gz% Total????%?Received?% Xferd??Average?Speed???Time????Time??????Time??CurrentDload ?Upload ??Total???Spent????Left??Speed100 ?352k ?100??352k????0?????0??16242??????0??0:00:22??0:00:22?--:--:--??9753?[root@localhost?lua]#?lltotal?356-rw-r--r--.?1?root?root?360876 Jan?13?11:15?lua-5.4.4.tar.gz?[root@localhost?lua]# tar?zxf?lua-5.4.4.tar.gz[root@localhost?lua]#?ll?total?356drwxr-xr-x. 4?1026?1000 ????58 Jan?13?11:15?lua-5.4.4-rw-r--r--.?1?root?root?360876 Jan?13?11:15?lua-5.4.4.tar.gz[root@localhost?lua]# cd?lua-5.4.4 [root@localhost?lua-5.4.4]#?lltotal?12drwxr-xr-x. 2?1026?1000 ?189?Jan?13?06:33?doc-rw-r--r--.?1?1026?1000?3146?Nov??4?12:25?Makefile-rw-r--r--.?1?1026?1000 ?151 Jan?13?11:15?README?drwxr-xr-x. 2?1026?1000 4096 Jan?13 06:29?src[root@localhost?lua-5.4.4]#?make?all?test[root@localhost?lua-5.4.4]#?make?install檢查lua腳本:[root@localhost?lua-5.4.4]#?lua?-vLua?5.1.4 ?Copyright?(C)?1994-2008?Lua.org,?PUC-Rio?[root@localhost?lua-5.4.4]# cd?/usr/local/bin/[root@localhost?bin]# ./lua?-vLua?5.4.4 ?Copyright?(C)?1994-2022?Lua.org,?PUC-Rio?[root@localhost?bin]#?
編程方式
交互式:
linux:
[root@localhost?lua-script]#?lua
Lua?5.1.4 ?Copyright?(C)?1994-2008?Lua.org,?PUC-Rio?>?print("hello")
hello
>?^C
windows:
D:\lua>lua
Lua?5.1.5 ?Copyright?(C)?1994-2012?Lua.org,?PUC-Rio?>?print("hello")
hello
>
腳本式:
linux:[root@localhost?lua-script]#?pwd /lua/lua-script[root@localhost?lua-script]# vi?hello.lua[root@localhost?lua-script]#?lua?hello.lua?script?lua[root@localhost?lua-script]#windowsD:\lua>lua?hello.lua?script?lua winD:\lua>
lua編程
基本語法
注釋:
print("script?lua win") -- 單行注釋
--[[
多行注釋?]]--
標識符:
類似于:java當中 變量、屬性名、方法名。
以字母(a-z,A-Z)、下劃線 開頭,后面加上0個或多個 字母、下劃線、數字。?不要用下劃線+大寫字母。
保留字。
總結一點:按照正常思維命名即可。
全局變量:
print(a)?--?nil?a=1
print(a)
a=nil?--銷毀a?print(a)
數據類型
nil
沒有任何有效值,就是一個?nil。
刪除的作用。全局變量和table。
print("--------刪除---------")?-- 定義一個table
myTab?= {key1?=?"value1",?key2?=?"value2"}?for?k,v?in?pairs(myTab) do
print(k.."-"..v)?end
print("--------刪除key1后---------")?myTab.key1?=?nil
for?k,v?in?pairs(myTab) do
print(k.."-"..v)
end
如何判斷變量是否為nil
boolean
false(false\nil), true(其他都為true,包括0)
print("--------boolean---------")
print(type(true))
print(type(false))
print(type(nil))
if false?or?nil then
print("nil?被當成為 true")?else
print("nil?為false")?end
print("--------測試0---------")
if?0 then
print("0是true")?else
print("0是false")?end
number
雙精度(8個字節)。
print("---------測試number-------------")?a?=?10
print(type(a))
String
字符串用單引號或雙引號來表示。
print("雙引號字符串")
print("單引號字符串")
用?[[可以換行的字符串 ]]
i?=?[[
我是中國人,
我愛我的祖國!?]]
print(i)
字符串和數字進行數學運算,優先將 字符串 轉 成 數字。
print("1"?+?2)
print("1"?+?"2")
print("1+2")
字符串連接
--?print("error"+1)
print("error"..1)
計算字符串長度
testLenth?=?"abcde"
print("testLenth的長度為:"..#testLenth)
table
類比成java當中:數組,map,鏈表,隊列等。
table的key的索引,從1開始。
print("---------測試 table-------------")?tab1?=?{}
tab2?= {"a","b","c"}
tab3?= {key1="value1",?key2?=?"value2"}?print("tab3-:")
for?k,v?in?pairs(tab3) do?print(k.."="..v)
end
print("tab3:")
tab1["a_key"]="a_value"?for?k,v?in?pairs(tab1) do
print(k.."="..v)?end
for?k,v?in?pairs(tab2) do?print(k.."="..v)
end
print("tab3-:")
tab3["key2"]?=?nil
for?k,v?in?pairs(tab3) do
print(k.."="..v)?end
print("tab3:")
function
階乘:
function?factorial(n)?if?n?==?0 then
return?1
else
return?n * factorial(n?-?1)?end
end
testFac?= factorial
print("6的階乘結果:"..testFac(6))
匿名函數
print("------------匿名function-------------")?function?testPrint(tab, func)
for?k,v?in?pairs(tab) do
print(func(k,v))?end
end
tab1?= {"a","b","c"}
testPrint(tab1,
function(k,v)
return?k.."="..v?end
)
thread:類似于線程,獨立的棧,局部變量。
userdata:存儲c 、 c++數據類型。