最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中的基本語法、控制語句總結

 更新時間:2014年09月29日 09:39:02   作者:果凍想  
這篇文章主要介紹了Lua中的基本語法、控制語句總結,本文總結了賦值、局部變量與塊、控制結構、數(shù)字型for、泛型for等內容,需要的朋友可以參考下

前言

學習一門語言,首先就是從最基本的語法開始,這一篇將對Lua中的語句進行概要的總結。

賦值

賦值的基本含義是修改一個變量或一個table中字段的值,這個和其它語言沒有多少區(qū)別,但是對于Lua,有一個特性,它允許“多重賦值”,也就是一下子將多個值賦予多個變量,例如以下代碼:

復制代碼 代碼如下:

local x1, x2 = 2, 4
print(x1)     -->2
print(x2)     -->4

在多重賦值中,Lua先對等號右邊的所有元素求值,然后才執(zhí)行賦值,例如以下用法,可以非常簡便的交換兩個元素的值:

復制代碼 代碼如下:

local x1, x2 = 2, 4
x1, x2 = x2, x1
print(x1)     -->4
print(x2)     -->2

Lua總是會將等號右邊值得個數(shù)調整到與左邊變量的個數(shù)相一致,規(guī)則是:如果值得個數(shù)少于變量的個數(shù),那么多余的變量會被賦為nil;如果值得個數(shù)更多的話,那么多余的值會被忽略掉。

局部變量與塊

相對于全局變量,Lua同時也提供了局部變量。通過local語句來創(chuàng)建局部變量:

復制代碼 代碼如下:

i = 10     -->全局變量
local i = 10     -->局部變量

在Lua中,局部變量也是有作用范圍的,也就是說,出了局部變量的作用范圍,局部變量就會失去作用,這個和C++等高級語言是一樣的道理。我們在編程的過程中,也可以使用do…end來顯示的聲明一個塊,例如以下代碼:

復制代碼 代碼如下:

do
     local a1 = 10
     local a2 = 10
end          -->a1和a2的作用域到此結束

至于使用局部變量和全局變量,關系到編程風格和實際需要,這里不做多說。

控制結構

幾乎所有的語言都有控制結構,同樣,對于Lua的控制結構是非常簡單的。Lua提供了用于條件執(zhí)行的if,循環(huán)的while、repeat和for。所有的控制結構都有一個顯式的終止符:if、for和while以end作為結尾,repeat以until作為結尾。特別注意,在Lua中是不支持switch結構的。

if then else

if語句先測試其條件,然后根據(jù)測試結果執(zhí)行then部分或者else部分,else部分是可選的。如果要編寫嵌套的if,可以使用elseif,下面通過代碼示例來說明if的使用。

復制代碼 代碼如下:

if a < 0 then a = 0 end
if a < b then retuan a else return b end
 
if op == "+" then
     r = a + b
elseif op == "-" then
     r = a - b
elseif op == "*" then
     r = a * b
elseif op == "/" then
     r = a / b
end

while

Lua中的while與其它語言是一樣的,示例代碼如下:

復制代碼 代碼如下:

local a = 10
while a > 0 do
     a = a - 1
     -- Do something else
end

repeat

repeat就好比C++中的do…while結構,循環(huán)體至少會執(zhí)行一次。repeat-until語句重復執(zhí)行其循環(huán)體直到條件為真時結束。

在Lua中有兩種for語句的形式:數(shù)字型for和泛型for

數(shù)字型for

數(shù)字型for的語法如下:

復制代碼 代碼如下:

for var = exp1, exp2, exp3 do
     -- Do something
end

var從exp1變化到exp2,每次變化都以exp3作為步長進行遞增,并執(zhí)行一次do…end之間的代碼。第三個表達式exp3是可選的,若不指定的話,Lua會將步長默認為1。例如以下代碼:

復制代碼 代碼如下:

for var = 1, 10 do
     print(var)
end
 
for var = 10, 1, -1 do
     print(var)
end

在使用for時,需要注意以下兩點:

1.for的exp1,exp2和exp3,這三個表達式是在循環(huán)開始前一次性求值得;并不會每次循環(huán)都進行求值;

2.控制變量var會被自動的聲明為for語句的局部變量,并且僅在循環(huán)體內可見。

泛型for

泛型for循環(huán)通過一個迭代器函數(shù)來遍歷所有值。在Lua的基礎庫中提供了ipairs,這是一個用于遍歷數(shù)組的迭代器函數(shù)。從外觀上看泛型for比較簡單,但其實它是非常強大的。通過不同的迭代器,幾乎可以遍歷所有的東西。標準庫提供了幾種迭代器,包括用于迭代文件中每行的io.lines、迭代table元素的pairs、迭代數(shù)組元素的ipairs和迭代字符串中單詞的string.gmatch等。當然了,我們也可以編寫自己的迭代器,在以后的文章中,我會總結如何編寫迭代器的。

break與return

break和return語句用于跳出當前的塊。這里的break、return和C++等語言是一樣的。break語句用于結束一個循環(huán),return語句用于從一個函數(shù)中返回結果。

相關文章

  • Lua教程(二十):Lua調用C函數(shù)

    Lua教程(二十):Lua調用C函數(shù)

    這篇文章主要介紹了Lua教程(二十):Lua調用C函數(shù),本文講解了C函數(shù)作為應用程序的一部分、C函數(shù)庫成為Lua的模塊等內容,需要的朋友可以參考下
    2015-04-04
  • Redis教程(三):List數(shù)據(jù)類型

    Redis教程(三):List數(shù)據(jù)類型

    這篇文章主要介紹了Redis教程(三):List數(shù)據(jù)類型,本文講解了List數(shù)據(jù)類型概述、相關命令列表、命令示例、鏈表結構的小技巧等內容,需要的朋友可以參考下
    2015-04-04
  • Lua中的函數(shù)淺析

    Lua中的函數(shù)淺析

    這篇文章主要介紹了Lua中的函數(shù),包括函數(shù)聲明、函數(shù)參數(shù)、多重返回值、變長參數(shù)、具名實參、閉包函數(shù)等內容,需要的朋友可以參考下
    2014-09-09
  • 理解Lua中的__index和__newindex

    理解Lua中的__index和__newindex

    這篇文章主要介紹了理解Lua中的__index和__newindex,本文給出了三段代碼來講解__index和__newindex,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-04-04
  • 分析Lua觀察者模式最佳實踐之構建事件分發(fā)系統(tǒng)

    分析Lua觀察者模式最佳實踐之構建事件分發(fā)系統(tǒng)

    當對象間存在一對多關系時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知依賴它的對象。觀察者模式屬于行為型模式
    2021-06-06
  • Lua中的協(xié)同程序探究

    Lua中的協(xié)同程序探究

    這篇文章主要介紹了Lua中的協(xié)同程序探究,本文講解了什么是協(xié)同程序、創(chuàng)建協(xié)同程序、更像樣的協(xié)同程序、讓協(xié)同程序掛起、resume操作的返回值,需要的朋友可以參考下
    2014-09-09
  • Openresty服務器使用lua腳本寫的Hello World簡單實例

    Openresty服務器使用lua腳本寫的Hello World簡單實例

    這篇文章主要介紹了Openresty服務器使用lua腳本寫的Hello World簡單實例,OpenResty (也稱為 ngx_openresty)是一個全功能的 Web 應用服務器。它打包了標準的 Nginx 核心,很多的常用的第三方模塊,以及它們的大多數(shù)依賴項,需要的朋友可以參考下
    2015-04-04
  • Lua獲取網(wǎng)絡時間(獲取時間同步服務器的時間)

    Lua獲取網(wǎng)絡時間(獲取時間同步服務器的時間)

    這篇文章主要介紹了Lua獲取網(wǎng)絡時間(獲取時間同步服務器的時間),本文使用Lua作為客戶端獲取網(wǎng)絡上的一些授時服務提供商的時間,需要的朋友可以參考下
    2015-04-04
  • Lua元表與元方法實例講解

    Lua元表與元方法實例講解

    這篇文章主要介紹了Lua元表與元方法實例講解,本文講解了算術類、關系類元方法、table訪問的元方法等內容,需要的朋友可以參考下
    2014-09-09
  • Lua編程示例(五): C語言對Lua表的讀取和添加

    Lua編程示例(五): C語言對Lua表的讀取和添加

    這篇文章主要介紹了Lua編程示例(五): C語言對Lua表的讀取和添加,本文直接給出代碼實例,需要的朋友可以參考下
    2015-07-07

最新評論

安泽县| 巫溪县| 耿马| 灯塔市| 天台县| 五大连池市| 九寨沟县| 扶风县| 翁源县| 美姑县| 密山市| 九寨沟县| 靖江市| 贵州省| 乐安县| 通化市| 麟游县| 图片| 昌邑市| 朝阳区| 淮安市| 隆回县| 金昌市| 南安市| 宜都市| 舟曲县| 太湖县| 龙里县| 化隆| 阿拉善左旗| 北海市| 聂拉木县| 界首市| 松江区| 佳木斯市| 景德镇市| 会同县| 金沙县| 宜章县| 洛宁县| 屏南县|