文章更新於:2020-05-13
注:Lua 參考手冊:https://amnot.lanzous.com/ickqlwb
Content
一、下載安裝配置環境
1.1、下載
- 可以去官網:http://www.lua.org/download.html 下載
- 也可以使用文首提供的鏈接
1.2、安裝
Windows 安裝將下載的文件解壓之後,路徑配置環境變量即可使用。
二、語法&概念
2.1、關鍵字
and |
break |
do |
else |
elseif |
end |
false |
for |
function |
if |
in |
local |
nil |
not |
or |
repeat |
return |
then |
true |
until |
while |
2.2、流程控制
判斷 |
if |
a = 3
if a == 3 then
print("a = 3")
end
# a = 3
判斷 |
if else |
a = 3
if a == 3 then
print("a = 3")
else
print("a != 3")
# a = 3
判斷 |
if else if |
a = 4
if a == 3 then
print("a = 3")
else if a == 4 then
print("a = 4")
else
print("a != 3 and a != 4")
# a = 4
循環 |
while |
sum = 0
i = 1
while(i <= 100) do
sum = sum + i
i = i + 1
end
print(sum)
# 5050
循環 |
for |
sum = 0
for i = 1, 100 do
sum = sum + i
end
print(sum)
# 5050
循環 |
repeat |
sum = 0
i = 1
repeat
sum = sum + i
i = i + 1
until(i > 100)
print(sum)
# 5050
循環 |
break |
while(true) do
print("true")
break
end
# true
2.3、數據類型
nil |
boolean |
number |
string |
function |
userdata |
thread |
table |
數據類型 | 描述 |
---|---|
nil |
無效值,相當於 Null |
boolean |
布爾值,只有 true 和 false 兩種 |
number |
雙精度類型的實浮點數 |
string |
字符串類型,需要雙引號或單引號括起來 |
function |
函數類型 |
userdata |
表示任意存儲在變量中的 C 數據結構 |
thread |
用於執行協同程序獨立線路 |
table |
表(table),唯一的數據結構。可以藉此創造出各種類型,比如數組和字典 |
2.4、字符串
表示方法
- 使用單引號括起來:
hello,world
- 使用雙引號括起來:
"hello,world"
- 使用雙中括號括起來:
[[hello,world]]
字符串函數
函數 | 描述 |
---|---|
string.upper(argument) |
全部轉換爲大寫 |
string.lower(argument) |
全部轉換爲小寫 |
string.gsub(mainString, findString, replaceString, num) |
替換字符串 |
string.strfind(str, substr,[init,[end]]) |
查找字符串 |
string.reverse(argument) |
翻轉字符串 |
string.format(...) |
格式化輸出字符串 |
string.char(argument) |
將 ascii 數字轉換爲字符 |
string.byte(argument, [,int]) |
將 ascii 字符轉換爲數字 |
string.len(argument) |
計算字符串長度 |
string.rep(string, n) |
重複 n 次字符串 |
.. |
連接兩個字符串 |
2.5、數組
數組,就是相同數據類型的元素按一定順序排列的集合,可以是一維數組和多維數組。
聲明一個一維數組:
array = {"Lua", "Tutorial"}
lua 數組索引默認從 1 開始,
不過你可以指定從 0 開始,也可以從負數開始。
聲明一個二維數組:
-- 初始化數組
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end
-- 訪問數組
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
使用行列數計算索引鍵防止出現 nil
-- 初始化數組
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
for col=1,maxColumns do
array[row*maxColumns +col] = row*col
end
end
-- 訪問數組
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
print('index is: ',row*maxColumns +col)
end
end
2.6、Lua 迭代器
在Lua中迭代器是一種支持指針類型的結構,它可以遍歷集合的每一個元素。
泛型 for 在自己內部保存迭代函數,實際上它保存三個值:迭代函數、狀態常量、控制變量。
演示示例:
array = {"Lua", "Tutorial"}
for key,value in ipairs(array)
do
print(key, value)
end
# 1 Lua
# 2 Tutorial
2.7、table(表)
2.8、模塊與包
2.9、元表(Metatable)
2.10、協同程序(coroutine)
2.11、文件 I/o
2.12、錯誤處理
2.13、調試(debug)
2.14、垃圾回收
2.15、面向對象
2.16、數據庫訪問
支持的數據庫有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。