Lua表達式和控制結(jié)構(gòu)學(xué)習(xí)筆記
算術(shù)操作符
Lua 的算術(shù)操作符有:
"+"(加法):
print(1 + 2)
"-"(減法):
print(2 - 1)
"*"(乘法):
print(1 * 2)
"/"(除法):
print(1 / 2)
"^"(指數(shù)):
print(27^(-1/3))
"%"(取模):
print(5 % 3)
關(guān)系操作符
Lua 提供以下關(guān)系操作符:
< > <= >= == ~=
以上操作符返回的運算結(jié)果都是 true 或 false。字符串跟數(shù)字不可以進行比較
邏輯操作符
邏輯操作符有 and、or、not
print(1 and 2)
print(nil and 1)
print(false and 2)
print(1 or 2)
print(false or 5)
邏輯操作符將 false 和 nil 視為假,其它的為真。
局部變量與作用域
Lua 通過 local 語句來創(chuàng)建局部變量,局部變量的作用域僅限于聲明它們的那個塊。
local a, b = 1, 10
if a < b then
print(a)
local a
print(a)
end
print(a, b)
用局部變量 local 保存全局變量,可以加速在當(dāng)前作用域中對全局變量的訪問。對于加速的效果,對比下面計算 斐波那契數(shù)列(Fibonacci)的執(zhí)行時間便知:
function fibonacci(n)
if n < 2 then
return n
end
return fibonacci(n - 2) + fibonacci(n - 1)
end
io.write(fibonacci(50), "\n")
使用局部變量 local
local function fibonacci(n)
if n < 2 then
return n
end
return fibonacci(n - 2) + fibonacci(n - 1)
end
io.write(fibonacci(50), "\n")
控制結(jié)構(gòu)
if then elseif else end
if num == 1 then
print(1)
elseif num == 2 then
print(2)
else
print("other")
end
Lua 不支持 switch 語句
while
先判斷 while 條件,如果條件為真,繼執(zhí)行循環(huán)體,否則結(jié)束
local i = 1
while a[i] do
print(a[i])
i = i + 1
end
repeat-until
先執(zhí)行一次循環(huán)體,再判斷條件,如果條件為真則退出循環(huán)體,否則繼續(xù)執(zhí)行循環(huán)體。類似其它語言的 do-while 語句,循環(huán)體至少會執(zhí)行一次
local a = 1
repeat
a = a + 1
b = a
print(b)
until b < 10
for 循環(huán)
for 循環(huán)語句有兩種形式:數(shù)字型for(numeric for)、泛型for(generic for)
數(shù)字型 for 語法:
for start, end, step do
doing something
end
start 是開始值,end 是結(jié)束值,step是步長(可選,默認為1)
for a = 10, 0, -2 do
print(a)
end
泛型 for 循環(huán)通過一個迭代器(iterator)函數(shù)來遍歷所有值:
tab = { key1 = "val1", key2 = "val2", "val3" }
for k, v in pairs(tab) do
if k == "key2" then
break
end
print(k .. " - " .. v)
end
break 和 return 語句用于跳出當(dāng)前執(zhí)行的塊。
相關(guān)文章
Node.js數(shù)據(jù)流Stream之Duplex流和Transform流用法
這篇文章介紹了Node.js數(shù)據(jù)流Stream之Duplex流和Transform流的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07Node.js一行代碼實現(xiàn)靜態(tài)文件服務(wù)器的方法步驟
這篇文章主要介紹了Node.js一行代碼實現(xiàn)靜態(tài)文件服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05在Mac OS上安裝使用Node.js的項目自動化構(gòu)建工具Gulp
Gulp是一個在使用上比Grunt更加簡潔的自動化工具(文中附有對比),和Node的npm包管理器配合使用非常方便,下面就記錄一下在Mac OS上安裝使用Node.js的項目自動化構(gòu)建工具Gulp的方法:2016-06-06使用Typescript和ES模塊發(fā)布Node模塊的方法
這篇文章主要介紹了使用Typescript和ES模塊發(fā)布Node模塊的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼
本篇文章主要介紹了node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07node.js中的buffer.Buffer.isEncoding方法使用說明
這篇文章主要介紹了node.js中的buffer.Buffer.isEncoding方法使用說明,本文介紹了buffer.Buffer.isEncoding的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12