濟(jì)南 論壇網(wǎng)站建設(shè)seo優(yōu)化廣告
注意
:文章將持續(xù)更新完善
文章目錄
- 一. 初識(shí)Lua
- 二. HelloWorld
- 三. Lua的數(shù)據(jù)類型
- 四. 變量
- 五. 循環(huán)
- 六. 函數(shù)
- 七. 條件控制
一. 初識(shí)Lua
Lua 是一種輕量小巧的腳本語(yǔ)言,用標(biāo)準(zhǔn)C語(yǔ)言編寫并以源代碼形式開放, 其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。官網(wǎng):點(diǎn)擊跳轉(zhuǎn)
Lua經(jīng)常嵌入到C語(yǔ)言開發(fā)的程序中,例如游戲開發(fā)、游戲插件等。
Nginx本身也是C語(yǔ)言開發(fā),因此也允許基于Lua做拓展,列如結(jié)合我們的Openresty實(shí)現(xiàn)多級(jí)緩存。
二. HelloWorld
CentOS7默認(rèn)已經(jīng)安裝了Lua語(yǔ)言環(huán)境,所以可以直接運(yùn)行Lua代碼。
(1)在Linux虛擬機(jī)的任意目錄下,新建一個(gè)hello.lua文件
(2)添加下面的內(nèi)容
print("Hello World!")
(3)運(yùn)行
三. Lua的數(shù)據(jù)類型
Lua中支持的常見數(shù)據(jù)類型包括:
另外,Lua提供了type()函數(shù)來(lái)判斷一個(gè)變量的數(shù)據(jù)類型:
四. 變量
Lua聲明變量的時(shí)候無(wú)需指定數(shù)據(jù)類型,而是用local來(lái)聲明變量為局部變量:
-- 聲明字符串,可以用單引號(hào)或雙引號(hào),
local str = 'hello'
-- 字符串拼接可以使用 ..
local str2 = 'hello' .. 'world'
-- 聲明數(shù)字
local num = 21
-- 聲明布爾類型
local flag = true
Lua中的table類型既可以作為數(shù)組,又可以作為Java中的map來(lái)使用。數(shù)組就是特殊的table,key是數(shù)組角標(biāo)而已:
-- 聲明數(shù)組 ,key為角標(biāo)的 table
local arr = {'java', 'python', 'lua'}
-- 聲明table,類似java的map
local map = {name='Jack', age=21}
Lua中的數(shù)組角標(biāo)是從1開始,訪問(wèn)的時(shí)候與Java中類似:
-- 訪問(wèn)數(shù)組,lua數(shù)組的角標(biāo)從1開始
print(arr[1])
Lua中的table可以用key來(lái)訪問(wèn):
-- 訪問(wèn)table
print(map['name'])
print(map.name)
五. 循環(huán)
對(duì)于table,我們可以利用for循環(huán)來(lái)遍歷。不過(guò)數(shù)組和普通table遍歷略有差異。
遍歷數(shù)組:
-- 聲明數(shù)組 key為索引的 table
local arr = {'java', 'python', 'lua'}
-- 遍歷數(shù)組
for index,value in ipairs(arr) doprint(index, value)
end
遍歷普通table
-- 聲明map,也就是table
local map = {name='Jack', age=21}
-- 遍歷table
for key,value in pairs(map) doprint(key, value)
end
六. 函數(shù)
定義函數(shù)的語(yǔ)法:
function 函數(shù)名( argument1, argument2..., argumentn)-- 函數(shù)體return 返回值
end
例如,定義一個(gè)函數(shù),用來(lái)打印數(shù)組:
function printArr(arr)for index, value in ipairs(arr) doprint(value)end
end
七. 條件控制
類似Java的條件控制,例如if、else語(yǔ)法:
if(布爾表達(dá)式)
then--[ 布爾表達(dá)式為 true 時(shí)執(zhí)行該語(yǔ)句塊 --]
else--[ 布爾表達(dá)式為 false 時(shí)執(zhí)行該語(yǔ)句塊 --]
end
與java不同,布爾表達(dá)式中的邏輯運(yùn)算是基于英文單詞: