主頁(yè) > 知識(shí)庫(kù) > 淺談Lua語(yǔ)句

淺談Lua語(yǔ)句

熱門標(biāo)簽:艾比利外呼系統(tǒng) 免費(fèi)門店地圖標(biāo)注注冊(cè)入駐 昆明電話外呼系統(tǒng)好么 衡水外呼線路解決 ??谥悄苷Z(yǔ)音電銷機(jī)器人好用嗎 杞縣地圖標(biāo)注app 電話機(jī)器人每天搜索多少次 陜西便宜電銷機(jī)器人軟件 外呼系統(tǒng)一天耗費(fèi)多少流量

Lua 中的語(yǔ)句支持賦值,控制結(jié)構(gòu),函數(shù)調(diào)用,還有變量聲明。

不允許空的語(yǔ)句段,因此 ;; 是非法的。

1 語(yǔ)句組 | chuncks

復(fù)制代碼 代碼如下:

chunck ::= {stat[';']}

([';'] 應(yīng)該是表示語(yǔ)句組后面 ; 是可選項(xiàng)。)

2 語(yǔ)句塊 | blocks

復(fù)制代碼 代碼如下:

block ::= chunck
stat ::= do block end

可以將一個(gè)語(yǔ)句塊顯式地寫成語(yǔ)句組,可以用于控制局部變量的作用范圍。

3 賦值 | assignment

Lua 支持多重賦值。

多重賦值時(shí),按序?qū)⒂疫叺谋磉_(dá)式的值賦值給左值。右值不足補(bǔ) nil,右值多余舍棄。

復(fù)制代碼 代碼如下:

b = 1
a,b = 4 -- a = 4,b = nil
+++

Lua 在進(jìn)行賦值操作時(shí),會(huì)一次性把右邊的表達(dá)式都計(jì)算出來(lái)后進(jìn)行賦值。

復(fù)制代碼 代碼如下:

i = 5
i,a[i] = i+1, 7 -- i = 6 ,a[5] = 7

特別地,有

x,y = y,x -- 交換 x,y 的值
+++

對(duì)全局變量以及表的域的賦值操作含義可以在元表中更改。

4 控制結(jié)構(gòu)

4.1 條件語(yǔ)句

復(fù)制代碼 代碼如下:

if [exp]
    [block]
elseif [exp]
    [block]
else
    [block]
end

4.2 循環(huán)語(yǔ)句

復(fù)制代碼 代碼如下:

while [exp]
    [block]
end
+++

repeat
    [block]
until [exp]

注意,由于 repeat 語(yǔ)句到 until 還未結(jié)束,因此在 until 之后的表達(dá)式中可以使用 block 中定義的局部變量。

例如:

復(fù)制代碼 代碼如下:

a = 1
c = 5
repeat
    b = a + c
    c = c * 2
until b > 20
print(c)            -->     40
+++

4.3 break 和 return

break 和 return 只能寫在語(yǔ)句塊的最后一句,如果實(shí)在需要寫在語(yǔ)句塊中間,那么就在兩個(gè)關(guān)鍵詞外面包圍 do end 語(yǔ)句塊。

do break end

5 For 循環(huán)

for 循環(huán)的用法比較多,單獨(dú)拎出來(lái)講。

for 中的表達(dá)式會(huì)在循環(huán)開始前一次性求值,在循環(huán)過(guò)程中不再更新。

5.1 數(shù)字形式

for [Name] = [exp],[exp],[exp] do [block] end
三個(gè) exp 分別代表初值,結(jié)束值,步進(jìn)。exp 的值均需要是一個(gè)數(shù)字。
第三個(gè) exp 默認(rèn)為 1,可以省略。

復(fù)制代碼 代碼如下:

a = 0
for i = 1,6,2 do
    a = a + i
end

等價(jià)于

復(fù)制代碼 代碼如下:

int a = 0;
for (int i = 1; i = 6;i += 2){ // 取到等號(hào),如果步進(jìn)是負(fù)的,那么會(huì)取 i >= 6
    a += i;
}

5.2 迭代器形式

迭代器形式輸出一個(gè)表時(shí),如果表中有函數(shù),則輸出的順序及個(gè)數(shù)不確定(筆者測(cè)試得出的結(jié)果,具體原因未知)。

迭代器形式的 for 循環(huán)的實(shí)質(zhì)

-- 依次返回 迭代器、狀態(tài)表、迭代器初始值

復(fù)制代碼 代碼如下:

function mypairs(t)
    function iterator(t,i)
        i = i + 1
        i = t[i] and i      -- 如果 t[i] == nil 則 i = nil;否則 i = i
        return i,t[i]
    end
    return iterator,t,0
end

-- 一個(gè)表
t = {[1]="1",[2]="2"}

-- 迭代形式 for 語(yǔ)句的 等價(jià)形式

復(fù)制代碼 代碼如下:

do
local f, s, var = mypairs(t)
    while true do
        local var1, var2 = f(s, var)
        var = var1
        if var == nil then break end

        -- for 循環(huán)中添加的語(yǔ)句
        print(var1,var2)

    end
end

-- 迭代形式 for 語(yǔ)句

復(fù)制代碼 代碼如下:

for var1,var2 in mypairs(t) do
    print(var1,var2)
end

--> 1   1
--> 2   2
--> 1   1
--> 2   2

5.2.1 數(shù)組形式

復(fù)制代碼 代碼如下:

ary = {[1]=1,[2]=2,[5]=5}
for i,v in ipairs(ary) do
    print(v)                    --> 1 2
end

從1開始,直到數(shù)值型下標(biāo)結(jié)束或者值為 nil 時(shí)結(jié)束。

5.2.2 表遍歷

復(fù)制代碼 代碼如下:

table = {[1]=1,[2]=2,[5]=5}
for k,v in pairs(table) do
    print(v)                    --> 1 2 5
end

遍歷整個(gè)表的鍵值對(duì)。

關(guān)于迭代器的更多內(nèi)容,可參考Lua 迭代器和泛型 for。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

您可能感興趣的文章:
  • Lua基礎(chǔ)教程之賦值語(yǔ)句、表達(dá)式、流程控制、函數(shù)學(xué)習(xí)筆記
  • Lua中的基本語(yǔ)法、控制語(yǔ)句總結(jié)
  • Lua教程(三):表達(dá)式和語(yǔ)句

標(biāo)簽:泰安 西寧 營(yíng)口 宿遷 臨滄 南京 昌都 ???/a>

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Lua語(yǔ)句》,本文關(guān)鍵詞  淺談,Lua,語(yǔ)句,淺談,Lua,語(yǔ)句,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Lua語(yǔ)句》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于淺談Lua語(yǔ)句的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章