亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開發(fā) > 綜合 > 正文

Lua教程(三):表達(dá)式和語(yǔ)句

2024-07-21 23:04:43
字體:
供稿:網(wǎng)友

一、表達(dá)式:

    1. 算術(shù)操作符:
    Lua支持常規(guī)算術(shù)操作符有:二元的“+”、“-”、“*”、“/”、“^”(指數(shù))、“%”(取模),一元的“-”(負(fù)號(hào))。所有這些操作符都可用于實(shí)數(shù)。然而需要特別說明的是取模操作符(%),Lua中對(duì)該操作符的定義為:
 

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

    a % b == a - floor(a / b) * b
 

    由此可以推演出x % 1的結(jié)果為x的小數(shù)部分,而x - x % 1的結(jié)果則為x的整數(shù)部分。類似的,x - x % 0.01則是x精確到小數(shù)點(diǎn)后兩位的結(jié)果。
    
    2. 關(guān)系操作符:
    Lua支持的關(guān)系操作符有:>、<、>=、<=、==、~=,所有這些操作符的結(jié)果均為true或false。
    操作符==用于相等性測(cè)試,操作符~=用于不等性測(cè)試。這兩個(gè)操作符可以應(yīng)用于任意兩個(gè)值。如果兩個(gè)值的類型不同,Lua就認(rèn)為他們不等。nil值與其自身相等。對(duì)于table、userdata和函數(shù),Lua是通過引用進(jìn)行比較的。也就是說,只有當(dāng)他們引用同一個(gè)對(duì)象時(shí),才視為相等。如:
復(fù)制代碼 代碼如下:

a = {}
a.x = 1
a.y = 0
b = {}
b.x = 1
b.y = 1
c = a

 

其結(jié)果是a == c,但a ~= b。
    對(duì)于字符串的比較,Lua是按照字符次序比較的。
    
    3. 邏輯操作符:

    Lua支持的邏輯操作符有:and、or和not。與條件控制語(yǔ)句一樣,所有的邏輯操作符都將false和nil視為假,其他的結(jié)果均為真。和其他大多數(shù)語(yǔ)言一樣,Lua中的and和or都使用“短路原則”。在Lua中有一種慣用寫法"x = x or v",它等價(jià)于:if not x then x = v end。這里還有一種基于“短路原則”的慣用寫法,如:
 

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

    max = (x > y) and x or y
 

    這等價(jià)于C語(yǔ)言中max = (x > y) ? x : y。由于x和y均為數(shù)值,因此它們的結(jié)果將始終為true。
    
    4. 字符串連接:
    前一篇Blog已經(jīng)提到了字符串連接操作符(..),這里再給出一些簡(jiǎn)單的示例。
 
復(fù)制代碼 代碼如下:

    /> lua
    > print("Hello " .. "World)
    Hello World
 

    > print(0 .. 1)  --即使連接操作符的操作數(shù)為數(shù)值類型,在執(zhí)行時(shí)Lua仍會(huì)將其自動(dòng)轉(zhuǎn)換為字符串。
    01

 

    5. table構(gòu)造器:

    構(gòu)造器用于構(gòu)建和初始化table的表達(dá)式。這是Lua特有的表達(dá)式,也是Lua中最有用、最通用的機(jī)制之一。其中最簡(jiǎn)單的構(gòu)造器是空構(gòu)造器{},用于創(chuàng)建空table。我們通過構(gòu)造器還可以初始化數(shù)組,如:

 

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

days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
for i = 1,#days do
    print(days[i])
end
--輸出結(jié)果為
--Sunday
--Monday
--Tuesday
--Wednesday
--Thursday
--Friday
--Saturday

 

從輸出結(jié)果可以看出,days在構(gòu)造后會(huì)將自動(dòng)初始化,其中days[1]被初始化為"Sunday",days[2]為"Monday",以此類推。
    Lua中還提供了另外一種特殊的語(yǔ)法用于初始化記錄風(fēng)格的table。如:a = { x = 10, y = 20 },其等價(jià)于:a = {}; a.x = 10; a.y = 20
    在實(shí)際編程時(shí)我們也可以將這兩種初始化方式組合在一起使用,如:

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

polyline = {color = "blue", thickness = 2, npoints = 4,
    {x = 0, y = 0},
    {x = 10, y = 0},
    {x = -10, y = 1},
    {x = 0, y = 1} }
print(polyline["color"]);
print(polyline[2].x)
print(polyline[4].y)
--輸出結(jié)果如下:
--blue
--10
--1

 

除了以上兩種構(gòu)造初始化方式之外,Lua還提供另外一種更為通用的方式,如:

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

opnames = { ["+"] = "add", ["-"] = "sub", ["*"] = "mul", ["/"] = "div"}
print(opnames["+"])
i = 20; s = "-"
a = { [i + 0] = s, [i + 1] = s .. s, [i + 2] = s..s..s }
print(a[22])

    對(duì)于table的構(gòu)造器,還有兩個(gè)需要了解的語(yǔ)法規(guī)則,如:
 
復(fù)制代碼 代碼如下:

    a = { [1] = "red", [2] = "green", [3] = "blue", }
 

    這里需要注意最后一個(gè)元素的后面仍然可以保留逗號(hào)(,),這一點(diǎn)類似于C語(yǔ)言中的枚舉。
 
復(fù)制代碼 代碼如下:

    a = {x = 10, y = 45; "one", "two", "three" }
 

    可以看到上面的聲明中同時(shí)存在逗號(hào)(,)和分號(hào)(;)兩種元素分隔符,這種寫法在Lua中是允許的。我們通常會(huì)將分號(hào)(;)用于分隔不同初始化類型的元素,如上例中分號(hào)之前的初始化方式為記錄初始化方式,而后面則是數(shù)組初始化方式。

 

二、語(yǔ)句:

    1. 賦值語(yǔ)句:

    Lua中的賦值語(yǔ)句和其它編程語(yǔ)言基本相同,唯一的差別是Lua支持“多重賦值”,如:a, b = 10, 2 * x,其等價(jià)于a = 10; b = 2 * x。然而需要說明的是,Lua在賦值之前需要先計(jì)算等號(hào)右邊的表達(dá)式,在每一個(gè)表達(dá)式都得到結(jié)果之后再進(jìn)行賦值。因此,我們可以這樣寫變量交互:x,y = y,x。如果等號(hào)右側(cè)的表達(dá)式數(shù)量少于左側(cè)變量的數(shù)量,Lua會(huì)將左側(cè)多出的變量的值置為nil,如果相反,Lua將忽略右側(cè)多出的表達(dá)式。

    2. 局部變量與塊:

    Lua中的局部變量定義語(yǔ)法為:local i = 1,其中l(wèi)ocal關(guān)鍵字表示該變量為局部變量。和全局變量不同的是,局部變量的作用范圍僅限于其所在的程序塊。Lua中的程序可以為控制結(jié)構(gòu)的執(zhí)行體、函數(shù)執(zhí)行體或者是一個(gè)程序塊,如:
    下面的x變量?jī)H在while循環(huán)內(nèi)有效。

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

while i <= x do
    local x = i * 2
     print(x)
     i = i + 1
end

    如果是在交互模式下,當(dāng)執(zhí)行l(wèi)ocal x = 0之后,該變量x所在的程序即以結(jié)束,后面的Lua語(yǔ)句將被視為新的程序塊。如果想避免此類問題,我們可以顯式的聲明程序塊,這樣即便是在交互模式下,局部變量仍然能保持其塊內(nèi)有效性,如:
復(fù)制代碼 代碼如下:

do
    local a2 = 2 * a
    local d = (b ^ 2 - 4 * a) ^ (1 / 2)
    x1 = (-b + d) / a2
    x2 = (-b - d) / a2
end  --a2和d的作用域至此結(jié)束。

 

和其它編程語(yǔ)言一樣,如果有可能盡量使用局部變量,以免造成全局環(huán)境的變量名污染。同時(shí)由于局部變量的有效期更短,這樣垃圾收集器可以及時(shí)對(duì)其進(jìn)行清理,從而得到更多的可用內(nèi)存。   

    3. 控制結(jié)構(gòu):
    Lua中提供的控制語(yǔ)句和其它大多數(shù)開發(fā)語(yǔ)言所提供的基本相同,因此這里僅僅是進(jìn)行簡(jiǎn)單的列舉。然后再給出差異部分的詳細(xì)介紹。如:
    1). if then else
 

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

    if a < 0 then
        b = 0
    else
        b = 1
    end
   

    2). if elseif else then
 
復(fù)制代碼 代碼如下:

    if a < 0 then
        b = 0
    elseif a == 0 then
        b = 1
    else
        b = 2
    end
   

    3). while
 
復(fù)制代碼 代碼如下:

    local i= 1
    while a[i] do
        print(a[i])
        i = i + 1
    end
   

    4). repeat
 
復(fù)制代碼 代碼如下:

    repeat
        line = io.read()
    until line ~= "" --直到until的條件為真時(shí)結(jié)束。
    print(line)
   

    5). for
 
復(fù)制代碼 代碼如下:

    for var = begin, end, step do --如果沒有step變量,begin的缺省步長(zhǎng)為1。
        i = i + 1
    end
 

    需要說明的是,for循環(huán)開始處的三個(gè)變量begin、end和step,如果它們使表達(dá)式的返回值,那么該表達(dá)式將僅執(zhí)行一次。再有就是不要在for的循環(huán)體內(nèi)修改變量var的值,否則會(huì)導(dǎo)致不可預(yù)知的結(jié)果。
    
    6). foreach
 
復(fù)制代碼 代碼如下:

    for i, v in ipairs(a) do  --ipairs是Lua自帶的系統(tǒng)函數(shù),返回遍歷數(shù)組的迭代器。
        print(v)
    end
   
    for k in pairs(t) do      --打印table t中的所有key。
        print(k)
    end
 

    見如下示例代碼:
 
復(fù)制代碼 代碼如下:

 days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }
revDays = {}
for k, v in ipairs(days) do
    revDays[v] = k
end

 

for k in pairs(revDays) do
    print(k .. " = " .. revDays[k])
end

--輸出結(jié)果為:
--Saturday = 7
--Tuesday = 3
--Wednesday = 4
--Friday = 6
--Sunday = 1
--Thursday = 5
--Monday = 2
 

 

   7). break
    和C語(yǔ)言中的break語(yǔ)義完全相同,即跳出最內(nèi)層循環(huán)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲国产高清av| 国产亚洲成aⅴ人片在线观看| 91色porny| 77777影视视频在线观看| 国产在线日韩精品| 欧美一级特黄视频| 春色成人在线视频| 国产肉体xxxx裸体784大胆| 日韩欧美二区| 99re视频在线观看| 免费av片在线观看一道本| 奇米影视7777精品一区二区| 操她视频在线观看| 欧美日韩中文在线观看| 国产精品久久久久久妇女6080| 天天操天天操天天操天天| 夜久久久久久| 免费观看四虎精品成人| 中文字幕在线视频网站| 一区二区三区中文字幕| 天天综合天天做| 亚洲综合丁香婷婷六月香| 天堂中文在线8| 日韩电影一区二区三区| 欧美性猛交xxxx乱大交| 97av免费视频| 91日韩欧美| 久久bbxx| 久久久av一区| 日本一二三四区视频| 手机免费av片| 91精品欧美综合在线观看最新| 欧美高清电影在线| 国产三区在线视频| 国产精品国产三级国产三级人妇| 久久久久九九视频| 久久精品一本| 色哟哟无码精品一区二区三区| 日本三级理论片| 婷婷亚洲图片| 污视频在线看网站| 麻豆mv在线看| 婷婷久久免费视频| 天堂在线www天堂中文在线| 亚洲国产网址| 99精品久久免费看蜜臀剧情介绍| 美女视频一区免费观看| 久久精品免费网站| 91在线观看下载| 一区二区三区中文字幕| 亚洲欧美网站| 日韩理伦片在线| 中文字幕国产欧美| 含羞草激情视频| 亚洲人精品午夜在线观看| 国产亚洲综合色| 一区二区三区.www| 狠狠躁夜夜躁人人躁婷婷91| 国产视频手机在线播放| 久久精品久久精品久久| 亚洲男人av在线| 无码人妻久久一区二区三区不卡| av手机天堂| 精品成人无码一区二区三区| 人妻偷人精品一区二区三区| 亚洲国产高清在线观看视频| www.99色| 欧美经典一区二区| 久久精品免费在线观看| 国产精选久久久久久| 精精国产xxxx视频在线播放| 国产69精品久久久久777| 日本爱爱免费视频| 欧美xxxx做受欧美| 黄页视频在线播放| 国产91av在线播放| 免费看成人吃奶视频在线| 日韩精品福利片午夜免费观看| 一区二区三区四区| av爱爱亚洲一区| 国产免费一区二区三区四区五区| 精品在线99| 日本人添下边视频免费| 成人性免费视频| 成人av片在线观看| 欧美夫妻性生活视频| 国产精品色婷婷在线观看| 爽爽爽爽爽爽爽成人免费观看| 免费黄网站观看| 日韩在线观看免费| 亚洲一区二区三区在线观看视频| 欧美日韩免费高清一区色橹橹| 丁香激情综合五月| 肉大捧一出免费观看网站在线播放| 国产精品videosex性欧美| 色婷婷在线视频| 在线观看成人免费视频| 色综合久久久888| 欧美特级黄色录像| 欧美日韩在线第一页| 五月天精品视频| 99久久婷婷国产精品综合| 在线观看视频一区二区| 国产极品美女在线| 最新国产成人av网站网址麻豆| 国产一区二区三区免费在线| 相泽南亚洲一区二区在线播放| 日韩欧美一区二区三区视频| 色欲欲www成人网站| 羞羞答答国产精品www一本| 福利地址发布页| 国产精品久久久久久久天堂| 少妇与大狼拘作爱性a| 欧美日本高清视频在线观看| 色噜噜狠狠成人中文综合| 天天爽天天爽夜夜爽| 国产亚洲精品资源在线26u| 小荡货+程雪柔| 日本免费视频www| 岛国电影中文在线| 美日韩丰满少妇在线观看| 99国产在线| 天天撸天天射| 国产精品日本一区二区三区在线| 日韩性小视频| 国产又爽又黄又刺激的软件| 亚洲亚洲精品三区日韩精品在线视频| 成人在线视频一区二区三区| 日韩一区二区视频在线观看| 牛夜精品久久久久久久99黑人| av影片免费在线观看| 制服丝袜综合网| 亚洲成av人在线观看| 天天射天天色天天干| 丝瓜app色版网站观看| 欧美人xxxxx| 亚洲精品555| 日韩久久久久久久久久久久| 亚洲精品久久久久久无码色欲四季| 欧洲成人一区二区三区| 国产精品第12页| 日韩欧美aⅴ综合网站发布| 成人欧美一区二区三区视频xxx| 日韩伦理一区二区三区| 国产suv精品一区二区6| 亚洲无吗在线| 日韩av一二三| 免费一级特黄特色大片| 97在线视频一区| 一边摸一边做爽的视频17国产| 亚洲乱码日产精品bd在线观看| 欧美性精品220| 亚洲最大成人网站| 亚洲大尺度视频在线观看| 国产黄色在线观看| 久久久久久亚洲中文字幕无码| 波多野结衣久久久久| 99精品视频免费观看| 欧美精品入口蜜桃| 天堂免费视频| 日韩一级片av| 久久久久一区二区三区四区| 日韩福利小视频| 国产精品无码毛片| 黄色高清视频| 91欧美一区二区三区| 国产午夜精品一区二区| 欧美色图17p| 免费黄色成年网站| 一个人看的www片免费高清视频| 色婷婷热久久| 成人三级在线| 欧美精品v日韩精品v国产精品| 尤物一区二区三区| 精品成人无码一区二区三区| 国内精品久久久久影院 日本资源| 97成人在线视频| 免费黄色网址网站| 国产精品区一区二区三区| 中文字幕av高清在线观看| 色素色在线综合| 日韩欧美精品一区二区综合视频| 久久久久久久综合色一本| 成人激情视频在线| 亚洲韩国精品一区| 日韩美女在线| 国产精品区一区二区三在线播放| 日本一区二区不卡在线| 欧美成人午夜精品免费| 91视频一区二区三区| 日本道中文字幕| 欧美性猛交xxx高清大费中文| 日韩制服丝袜av| 国产伪娘ts一区| 黄色日本网站| 天天色天天草天天射| 国产一二三区在线播放| 精品成人一区二区三区四区| 四虎国产精品成人免费入口| 91九色国产视频| a国产在线视频| 久久精子c满五个校花| 岛国在线视频| 欧美日日夜夜| 日韩一级精品视频在线观看| 日韩二区三区在线| 日韩欧美不卡在线观看视频| 四季av一区二区三区免费观看| 亚洲综合欧美在线| 冲田杏梨av在线| 亚洲一区日韩精品| 色偷偷av一区二区三区| 免费av不卡| 春意影院普通入口| 538精品在线观看| 日韩欧美激情一区二区| av一区二区久久| 亚洲精品在线观看免费| 伊人久久大香线蕉综合四虎小说| 日本高清无吗v一区| 色悠悠亚洲一区二区| 久久久久高潮毛片免费全部播放| 中文字幕免费在线看线人动作大片| 亚洲护士老师的毛茸茸最新章节| 国产精品久久久久久麻豆一区软件| 99热免费精品| 11024精品一区二区三区日韩| 亚洲av午夜精品一区二区三区| 欧美日韩国产高清电影| 黄色大片a级| 日韩精品网站| 欧美一级视频在线播放| 99久久婷婷这里只有精品| 国产91免费视频| 欧美四级在线| 亚洲色欲久久久综合网东京热| 欧美亚洲禁片免费| 日本公妇乱淫免费视频一区三区| 明星国产一级毛片范冰冰视频| 一区二区三区 在线观看视| 欧美福利一区二区三区| 一二三av在线| 3d动漫啪啪精品一区二区免费| 在线观看成人免费视频| 热久久视久久精品18亚洲精品| 中文字幕在线观看2018| 日韩三级在线免费观看| 国产原创一区二区三区| 国产黄视频在线| 亚洲视频在线观看网站| 国产高清成人在线| 日韩一区二区三免费高清在线观看| 国产情侣一区二区三区| 亚洲va国产日韩欧美精品色婷婷| fc2ppv在线观看| 日本少妇全体裸体洗澡| 刘亦菲毛片一区二区三区| 国产美女永久免费无遮挡| 国产精品jvid在线观看蜜臀| 午夜啪啪小视频| 黄色小视频在线播放| 国产无套内射又大又猛又粗又爽| a黄色在线观看| 欧美性极品少妇精品网站| 色综合综合色| 国产午夜亚洲精品理论片色戒| 成人亚洲一区| 久久久久久久久久久99999| 亚州成人在线电影| 亚洲国产精品第一区二区| 四虎成人免费影院| 在线观看日韩高清av| 日韩精品视频无播放器在线看| 在线观看三级视频欧美| 最新国产在线观看| 91精品综合久久久久久久久久久| 日本成本人片免费观看| 欧美18一14sex性处hd| 中文字幕乱码免费| 成人av午夜影院| 国产又粗又黄又爽视频| 精品黑人一区二区三区观看时间| 中文人妻熟女乱又乱精品| 国产精品久久久久久久久免费高清| 国产一区二区三区| 日本韩国在线不卡| 97**国产露脸精品国产| 成人知道污网站| 亚洲天堂小视频| 欧美极品欧美精品欧美图片| 国产自产视频| 91官网在线免费观看| 欧美大片顶级少妇| 日日噜噜噜噜人人爽亚洲精品| 国内精品久久久久久影视8| 欧美人与禽性xxxxx杂性| 国产色视频在线播放| 成年网站在线播放| 精品日韩在线播放| 四虎精品永久免费| 天天人人精品| 国产精品www在线观看| 午夜精品久久久久久久久久| 亚洲欧美日本在线观看| 亚洲电影成人| 国产自产视频| 亚洲国产精品suv| 久久新电视剧免费观看| 香蕉视频免费版| 高清国产mv在线观看| 国产三级香港三韩国三级| 亚洲一区二区三区在线免费| 1区2区3区在线视频| 中文不卡在线| а√中文在线天堂精品| 四虎精品欧美一区二区免费| 国产成人无码一区二区在线播放| 久久综合视频网| 一级女性全黄久久生活片免费| 日韩高清dvd碟片| 亚洲天堂精品在线观看| 日本大片免费看| 国产日韩在线视频| 日本一区二区三区播放| 91精品国产91久久久久久三级| 丰满少妇久久久久久久| 亚洲欧美久久久久| 久久精品国产精品亚洲色婷婷|