柚子快報(bào)邀請碼778899分享:java Lua語法基本使用
柚子快報(bào)邀請碼778899分享:java Lua語法基本使用
? 簡介:java系列技術(shù)分享(?持續(xù)更新中…?) ? 初衷:一起學(xué)習(xí)、一起進(jìn)步、堅(jiān)持不懈 ? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評論區(qū)指正? ? 希望這篇文章對你有所幫助,歡迎點(diǎn)贊 ? 收藏 ?留言 ?
? 更多文章請點(diǎn)擊
文章目錄
一、Lua簡介二、Lua安裝2.1 Hello World 入門
三、數(shù)據(jù)類型四、基本語法4.1 注釋4.2 交互式編程4.3 字符串連接4.5 循環(huán)4.5.1 while 循環(huán)4.5.2 for 循環(huán)4.5.3 repeat...until循環(huán)4.5.4 循環(huán)控制語句
4.6 函數(shù)4.7 流程控制4.7.1 if 語句4.7.2 if...else 語句
4.8 邏輯運(yùn)算符
一、Lua簡介
官網(wǎng):https://www.lua.org Lua 教程 | 菜鳥教程:https://www.runoob.com/lua/lua-tutorial.html LuatOS 文檔:https://wiki.luatos.com/ LuatOS 在線模擬 - lua在線測試 :https://wiki.luatos.com/_static/luatos-emulator/lua.html Lua 是一種輕量小巧的腳本語言,用標(biāo)準(zhǔn) C 語言編寫并以源代碼形式開放,其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。Lua作為一種腳本語言(解釋型語言),號稱性能最高的腳本,被廣泛應(yīng)用在很多需要性能的地方,比如nginx,游戲腳本,OpenResty等等。在我的項(xiàng)目agent中,使用lua腳本實(shí)現(xiàn)了任務(wù)處理邏輯。任務(wù)執(zhí)行器在接收到任務(wù)時(shí)選擇對應(yīng)的lua腳本執(zhí)行任務(wù),與執(zhí)行器進(jìn)行解耦,同時(shí)支持熱更新。
二、Lua安裝
Lua的安裝非常簡單,如果是Linux系統(tǒng),則將make all test替換掉make linux test
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test
2.1 Hello World 入門
新建hello.lua文件 在其中添加 print(“Hello World”) 運(yùn)行 lua hello.lua 測試成功
三、數(shù)據(jù)類型
數(shù)據(jù)類型描述說明nil這個(gè)最簡單,只有值nil屬于該類,表示一個(gè)無效值(在條件表達(dá)式中相當(dāng)于false)。nil 作比較時(shí)應(yīng)該加上雙引號boolean包含兩個(gè)值:false和true。Lua 把 false 和 nil 看作是"假",其他的都為"真"number表示雙精度類型的實(shí)浮點(diǎn)數(shù)string字符串由一對雙引號或單引號來表示也可以用 2 個(gè)方括號 “[[]]” 來表示"一塊"字符串。使用 # 來計(jì)算字符串的長度function由 C 或 Lua 編寫的函數(shù)tableLua 中的表(table)其實(shí)是一個(gè)"關(guān)聯(lián)數(shù)組"(associative arrays),數(shù)組的索引可以是數(shù)字或者是字符串。在 Lua 里,table 的創(chuàng)建是通過"構(gòu)造表達(dá)式"來完成,最簡單構(gòu)造表達(dá)式是{},用來創(chuàng)建一個(gè)空表。
可以使用type函數(shù)測試給定變量或者值的類型。
nil
nil 類型表示空值,給全局變量賦值 nil 等同于把它們刪除。 nil 作比較時(shí)應(yīng)該加上引號:
if (type(nil)==nil) then
print(true)
else
print(false)
end
if (type(nil)=="nil") then
print(true)
else
print(false)
end
輸出:
false
true
四、基本語法
4.1 注釋
兩個(gè)減號是單行注釋: --注釋 多行注釋 --[[ 注釋 --]]
4.2 交互式編程
Lua 交互式編程模式可以通過命令 lua -i 或 lua 來啟用:
lua -i
Lua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio
4.3 字符串連接
可以使用操作符…(兩個(gè)點(diǎn))
print("hello".."world")
循環(huán)變量
-- 字符串
local str = 'Hello'
-- 數(shù)字
local num = 21
-- 布爾類型
local flag = true
-- 數(shù)組
local arr = {'java','python','lua'}
-- table
local map = {name = 'Jack',age = 12}
訪問
--訪問數(shù)組 ,lua數(shù)組的角標(biāo)從1開始
print(arr[1])
-- 訪問 table
print(map['name'])
print(map.name)
4.5 循環(huán)
4.5.1 while 循環(huán)
local a = 10
while (a < 20)
do
print("value of a:", a)
a = a + 1
end
輸出:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
4.5.2 for 循環(huán)
數(shù)值for循環(huán)
for var=exp1,exp2,exp3 do
<執(zhí)行體>
end
var 從 exp1 變化到 exp2,每次變化以 exp3 為步長遞增,并執(zhí)行一次 “執(zhí)行體”。exp3 是可選的,如果不指定,默認(rèn)為1。
for i = 10, 1, -1 do
print(i)
end
輸出
10
9
8
7
6
5
4
3
2
1
遍歷數(shù)組
local arr = {'java','python','lua'}
--遍歷數(shù)組
for index,value in ipairs(arr) do
print(index,value)
end
遍歷table
local map = {name = 'Jack',age = 12}
--遍歷table
for key ,value in pairs(map) do
print(index,value)
end
4.5.3 repeat…until循環(huán)
先執(zhí)行循環(huán)體的語句,再進(jìn)行條件判斷,如果條件為 flase 則繼續(xù)執(zhí)行循環(huán)體,否則跳出循環(huán)。
repeat
statements
until( condition )
local a = 10
repeat
print("value of a:", a)
a = a + 1
until (a > 15)
輸出
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
4.5.4 循環(huán)控制語句
break語句 執(zhí)行到 break 處會(huì)跳出循環(huán)。
local a = 10
while(a < 20)
do
print("value of a:", a)
a = a + 1
if(a > 15) then
break
end
end
4.6 函數(shù)
local function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))
local factorial2 = factorial1
print(factorial2(5))
輸出
120
120
可變參數(shù) Lua 函數(shù)可以接受可變數(shù)目的參數(shù),和 C 語言類似,在函數(shù)參數(shù)列表中使用三點(diǎn) … 表示函數(shù)有可變的參數(shù)。
local function add(...)
local s = 0
for i, v in ipairs { ... } do --> {...} 表示一個(gè)由所有變長參數(shù)構(gòu)成的數(shù)組
s = s + v
end
return s
end
print(add(3, 4, 5, 6, 7)) --> 25
內(nèi)置函數(shù) Lua 也有很多內(nèi)置函數(shù),我們可以通過官方手冊進(jìn)行查詢:https://www.lua.org/manual/5.4/
4.7 流程控制
4.7.1 if 語句
--[ 定義變量 --]
local a = 10;
--[ 使用 if 語句 --]
if (a < 20)
then
--[ if 條件為 true 時(shí)打印以下信息 --]
print("a 小于 20");
end
print("a 的值為:", a);
輸出
a 小于 20
a 的值為: 10
4.7.2 if…else 語句
--[ 定義變量 --]
local a = 100;
--[ 檢查條件 --]
if (a < 20)
then
--[ if 條件為 true 時(shí)執(zhí)行該語句塊 --]
print("a 小于 20")
else
--[ if 條件為 false 時(shí)執(zhí)行該語句塊 --]
print("a 大于 20")
end
print("a 的值為 :", a)
輸出
a 大于 20
a 的值為 : 100
4.8 邏輯運(yùn)算符
設(shè)定 A 的值為 true,B 的值為 false
操作符描述實(shí)例and 邏輯與操作符。 若 A 為 false,則返回 A,否則返回 B。(A and B) 為 false。or邏輯或操作符。 若 A 為 true,則返回 A,否則返回 B。(A or B) 為 true。not邏輯非操作符。與邏輯運(yùn)算結(jié)果相反,如果條件為 true,邏輯非為 false。not(A and B) 為 true。
柚子快報(bào)邀請碼778899分享:java Lua語法基本使用
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。