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

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

Lua中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語(yǔ)句講解

2024-07-21 23:05:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1. Lua類型
1.1 基本類型

Lua是一種動(dòng)態(tài)類型語(yǔ)言,沒(méi)有類型定義的語(yǔ)法。Lua一共有8種基礎(chǔ)類型:nil(空)、boolean(布爾)、number(數(shù)字)、string(字符串)、userdata(自定義類型)、function(函數(shù))、thread(線程)、table(表)。

函數(shù)type可根據(jù)一個(gè)值返回其類型名稱(字符串),如print(type(print)),輸出“function”;print(type(type(X))) ,輸出“string”。(這里不管X有沒(méi)有定義,type(X)總是返回字符串)

1.2 各類型要注意的地方

關(guān)于boolean:

在Lua中,false和nil視為“false”,其它值均視為“true”(包括數(shù)字0和空字符串)。
關(guān)于number:

該類型用于表示實(shí)數(shù)(雙精度double),整數(shù)也用此類型表示。
關(guān)于string:

字符串不能像C語(yǔ)言一樣直接修改某個(gè)字符,必要時(shí)應(yīng)通過(guò)string庫(kù)創(chuàng)建一個(gè)新的字符串。字符串可以用一對(duì)匹配的單引號(hào)或雙引號(hào)來(lái)界定??梢詫?shí)用類C語(yǔ)言的轉(zhuǎn)義序列。

此外,可以用雙方括號(hào)[[內(nèi)容]]來(lái)界定,其中的換行字符均被忽略,適用于包含一整段的字符串。若在左邊的兩個(gè)方括號(hào)間加入任意數(shù)量的等號(hào),如[===[,則字符串右邊應(yīng)該匹配帶相同數(shù)量等號(hào)的方括號(hào),如]===],這樣做就可以在不加轉(zhuǎn)義的情況下直接嵌入任意內(nèi)容的字符串。同理注釋也可以這樣使用,如--[==[匹配--]==]。

Lua提供運(yùn)行時(shí)的數(shù)字與字符串自動(dòng)轉(zhuǎn)換。如print("10"+1) –> 11,print(10 ..20) –> 1020(“..”是字符串連接符,上例將數(shù)字轉(zhuǎn)換成字符串并連接,數(shù)字和..之間應(yīng)該留一個(gè)空格)。

建議盡量少用自動(dòng)轉(zhuǎn)換,如有需要可用強(qiáng)制轉(zhuǎn)換。函數(shù)tonumber(x)嘗試將x轉(zhuǎn)換成數(shù)字,若失敗則返回nil,函數(shù)tostring(x)將x轉(zhuǎn)換成字符串。在字符串前放置“#”可獲得字符串的長(zhǎng)度,如print(#"length") –> 6。
關(guān)于table:

Table是一種具有特殊索引方式的數(shù)組,可以實(shí)用除nil外的其他類型的值作為索引,其增長(zhǎng)與刪減均通過(guò)自動(dòng)內(nèi)存管理來(lái)完成。Table是一個(gè)“對(duì)象”,程序僅持有一個(gè)對(duì)它們的引用,例如可以通過(guò)a = {}創(chuàng)建一個(gè)table并將它的引用存儲(chǔ)到a,若再b = a,則b與a引用同一個(gè)table。若table的某個(gè)元素沒(méi)有初始化,其值即為nil,可以通過(guò)賦nil來(lái)刪除table的某個(gè)元素。

有一種等價(jià)寫法:p["age"]等價(jià)于p.age。注意,p.age和p[age]并不等價(jià)。

“#”可用于返回一個(gè)數(shù)組的最后一個(gè)索引值(或其大?。@鏿rint(a[#a])打印列表a的最后一個(gè)值,a[#a+1] = io.read()讀入一個(gè)值并插入到列表a末尾。注意,Lua將nil作為界定數(shù)組結(jié)尾的標(biāo)志,當(dāng)一個(gè)數(shù)組中間含有nil時(shí),#會(huì)認(rèn)為第一個(gè)nil就是結(jié)尾,因此應(yīng)避免對(duì)含“空隙”的數(shù)組使用#。

在Lua中,一般默認(rèn)table第一個(gè)索引為1而不是C語(yǔ)言中的0。
Function、userdata和thread類型留到以后再講。
2. 表達(dá)式
2.1. 算術(shù)操作符

常規(guī)的操作符有:+加、-減、*乘、/除、^指數(shù)、%取模。其中^可用于任意實(shí)數(shù),如x ^ (-1 / 3)計(jì)算x的立方根倒數(shù)。%可以這樣使用:x % 1結(jié)果是x的小數(shù)部分,x - x % 0.01是x精確到小數(shù)點(diǎn)后兩位的結(jié)果。

2.2. 關(guān)系操作符

常規(guī)關(guān)系操作符有:<小于、>大與、<=小于等于、>=大于等于、==相等、~=不等。==和~=可用于任意兩個(gè)值,若兩個(gè)值具有不同類型則不相等,有相同類型則作正常比較(nil只與其自身相等)。對(duì)于對(duì)象則比較它們的引用。

2.3. 邏輯操作符

邏輯操作符有and、or和not。對(duì)and(or)來(lái)說(shuō),若第一個(gè)操作數(shù)為假(真),就返回第一個(gè)操作數(shù),否則返回第二個(gè)操作數(shù)。如print(4 and 5) –> 5,print(false or 5) –> 5。

有一些常用寫法:x = x or v,可用在沒(méi)有設(shè)置x的時(shí)候,將其設(shè)為一個(gè)默認(rèn)值v。另一種寫法(a and b) or c類似a ? b : c,如max = (x > y) and x or y。

2.4. 字符串連接符

可用“..”(兩個(gè)點(diǎn))來(lái)連接兩個(gè)字符串,若其中任一個(gè)為數(shù)字,Lua會(huì)自動(dòng)轉(zhuǎn)換,如print(0 ..1) –> 01。連接字符串只會(huì)創(chuàng)建一個(gè)新字符串,不會(huì)對(duì)原操作數(shù)進(jìn)行修改。

Lua運(yùn)算符優(yōu)先級(jí)順序如下圖所示。

數(shù)據(jù)類型,Lua,表達(dá)式,流程控制,語(yǔ)句

2.5. Table構(gòu)造式

除了上述直接賦予{}創(chuàng)建空table以外,可以初始化其值,如day = {"S", "M", "T"},或者point = {x = 10, y = 20}(即point.x=10,point.y=20)。以上兩種初始化方式可以混用,還可以用分號(hào)代替逗號(hào),來(lái)將列表部分和記錄部分明顯地分隔開,如polyline = {color = "blue"; {x = 0, y = 0}, {x = 10, y = 10}, {x = 20, y = 30}},則print(polyline[2].x)` –> 10。

更加通用的初始化格式,可以在方括號(hào)間聲明索引值,如opnames={["+"] = "add", ["-"] = "minus"}。若某些情況真的需要以0作為一個(gè)數(shù)組的起始索引,可以這樣days={[0] = "S", "M", "T"}。但是不推薦在Lua中以0作為索引起始值,因?yàn)榇蠖鄶?shù)內(nèi)建函數(shù)都假設(shè)數(shù)組起始于索引1。

3. 順序結(jié)構(gòu)
3.1. 賦值

除了普通的用“=”賦值之外,Lua還允許多重賦值,每個(gè)值和每個(gè)變量之間用逗號(hào)分隔。Lua總會(huì)將等號(hào)右邊值的個(gè)數(shù)調(diào)整到與左邊變量個(gè)數(shù)一致,若值個(gè)數(shù)少了,則多余的變量將賦予nil;若值個(gè)數(shù)多了,則多余的值會(huì)被丟棄。如a, b = 10, 2 * x,x, y = y, x(交換)。多重賦值一般用于交換兩個(gè)變量的值,或者接受一個(gè)函數(shù)的多個(gè)返回值。

3.2. 局部變量與程序塊

相對(duì)于全局變量,Lua還提供了局部變量,給變量加上限定詞local即可。局部變量的作用域僅限于聲明它們的那個(gè)程序塊(如控制結(jié)構(gòu)的執(zhí)行體、函數(shù)等)。

注意,在交互模式中每行輸入內(nèi)容自身就形成了一個(gè)程序塊,因此單句local聲明沒(méi)有效果??梢燥@式界定一個(gè)塊,將內(nèi)容放入一對(duì)do-end關(guān)鍵字中即可,這個(gè)方法也可以用于嚴(yán)格控制某些局部變量的作用域。

有一種習(xí)慣寫法local foo = foo,創(chuàng)建一個(gè)局部變量foo并用全局變量foo的值初始化它。若后續(xù)其他函數(shù)改變?nèi)肿兞縡oo的值,可以在這里先將其保存起來(lái)。

4. 控制結(jié)構(gòu)
所有控制結(jié)構(gòu)語(yǔ)句都有一個(gè)顯示的終止符:if、for、和while以end結(jié)尾,repeat以u(píng)ntil結(jié)尾。

4.1. if then else(elseif)語(yǔ)句

格式:if <條件1> then <內(nèi)容1> elseif <條件2> then <內(nèi)容2> else <內(nèi)容3> end
Lua中不支持switch語(yǔ)句,所以一連串if elseif語(yǔ)句是很常見的。

4.2. while和repeat語(yǔ)句

格式:while <條件> do <循環(huán)體> end

格式:repeat <循環(huán)體> until <條件>
在Lua中,一個(gè)聲明在循環(huán)體內(nèi)的局部變量的作用域包括循環(huán)的條件測(cè)試。

4.3. 數(shù)字型for語(yǔ)句

格式:for var=exp1, exp2, exp3 do <循環(huán)體> end
上式表示var從exp1變化到exp2,以exp3作為步長(zhǎng)遞增var。其中exp3是可選的,若不指定則默認(rèn)步長(zhǎng)為1。如果將exp2設(shè)為math.huge,則為無(wú)限循環(huán)。

有一些細(xì)節(jié)需要注意。for的3個(gè)表達(dá)式是在循環(huán)開始前一次性求值的,以后將不再求值。另外,控制變量會(huì)被自動(dòng)地聲明為for語(yǔ)句的局部變量,僅在循環(huán)體內(nèi)可見。

4.4. 泛型for語(yǔ)句

泛型for循環(huán)通過(guò)一個(gè)迭代器來(lái)遍歷所有值,如for i,v in ipairs(tableA) do print(v) end,其中i被賦予索引值,而v被賦予對(duì)應(yīng)的元素值。其中ipairs(array)函數(shù)用于遍歷數(shù)組并返回?cái)?shù)字下標(biāo)-元素值對(duì),pairs(table)函數(shù)用于遍歷table并返回鍵-值對(duì),string.gmatch(string)迭代字符串中的單詞。

泛型for的一個(gè)應(yīng)用是創(chuàng)建逆向table,即新table的鍵值與原table鍵值反轉(zhuǎn)。

4.5. break和return語(yǔ)句

這兩個(gè)語(yǔ)句都用于跳出當(dāng)前的語(yǔ)句塊,break結(jié)束一層循環(huán),return結(jié)束一個(gè)函數(shù)的執(zhí)行。如果剛定義了一個(gè)function然后直接要在一開始就跳出函數(shù)作為調(diào)試用,可以用一個(gè)顯示的do塊來(lái)包含return語(yǔ)句,即function foo() do return end end。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产欧美在线观看视频| 96sao在线精品免费视频| 九九久久久久午夜精选| 黄页网址大全在线播放| 精品国产依人香蕉在线精品| 91精品国产乱码久久久久| 日韩av片网站| 影音先锋久久久| 日韩欧美理论片| 亚洲欧洲精品在线观看| 亚洲老妇激情| 亚洲美女在线国产| 久久av.com| 亚洲免费久久| 国产av一区二区三区传媒| 亚洲最大成人在线| 操女生的网站| 国产福利视频一区二区| 免费麻豆国产一区二区三区四区| 佐佐木明希电影| 国产精品美女久久久久久久久| 久草免费在线| 久久av红桃一区二区小说| 久久久久久久久久久免费| 婷婷综合在线观看| 肉丝袜脚交视频一区二区| 精品久久久香蕉免费精品视频| 日韩av高清在线播放| 午夜视频在线观看国产| 午夜精品久久久久久久99热影院| 日本一卡2卡三卡4卡网站| 国产一区二区三区在线观看视频| 国产超级va在线视频| 在线观看精品视频一区二区三区| 精品日韩视频在线观看| 欧美1234区| 国产精品欧美日韩一区二区| 久久在线中文字幕| 国产精品第八页| 亚洲黄色小视频| 亚洲乱码一区二区三区在线观看| 免费在线成人激情电影| 亚洲一级免费在线观看| 欧美性猛交xxxx黑人猛交| 欧美黄网在线观看| 青春草在线视频免费观看| 日本在线视频www| 九九在线高清精品视频| 波多野结衣有码| 91丝袜一区二区三区| 国产精品一品| 国偷自产视频一区二区久| 亚洲av少妇一区二区在线观看| 亚洲另类黄色| eeuss影院www影院| 日韩精品极品在线观看| 成人444kkkk在线观看| 一级黄色在线| 激情六月综合| 国内精品在线视频| 午夜老司机精品| 久久96国产精品久久99软件| www.xxx麻豆| 日本三级在线电影| 国产真实乱子伦精品视频| 日本一区二区视频在线观看| 亚洲最大成人在线视频| 国产精品 日韩| 亚洲精品视频在线| 亚洲国产欧美一区二区三区同亚洲| 亚洲永久免费视频| 中国女人内谢25xxxxx| 国产精品视频26uuu| 美女视频网站在线观看| 久久国产乱子精品免费女| 久久精品久久精品国产大片| 色窝窝无码一区二区三区成人网站| 久久大香伊蕉在人线观看热2| 欧美日韩亚洲三区| 国产毛片一区二区三区va在线| 久久精品国产亚洲夜色av网站| 国产精品.www| 玩弄中年熟妇正在播放| 不卡一本毛片| 久久国产成人午夜av影院宅| 热re99久久精品国产66热| 亚洲国产第一区| 欧美videosex性欧美黑吊| 日韩欧美二区三区| 星空大象在线观看免费播放| 极品盗摄国产盗摄合集| 色综合色综合色综合色综合| 久久久精品免费| 国产精品久久久久无码av| 欧美做爰爽爽爽爽爽爽| 国产日产精品_国产精品毛片| 久久99国产精品99久久| 欧美成人777| 国产精品亚洲一区| 国产精品久久久亚洲一区| 自拍视频网站| 在线国产精品播放| 911精品国产一区二区在线| 玛丽玛丽电影原版免费观看1977| 91九色美女在线视频| 亚洲欧洲一区二区福利| 黄色片视频免费| 久久伊人精品视频| 无码人妻黑人中文字幕| 天天干天天综合| 色哟哟一区二区| 国产一二三四五区| 日韩中文字幕一区二区三区| 国产欧美精品一区二区三区-老狼| 国产福利一区二区三区在线观看| 神马久久久久久久| 99热自拍偷拍| xxxxx欧美| 成人在线免费观看网址| 国产黄色一级电影| 亚洲欧美日本国产| 又色又爽又黄18网站| 欧美精品一区在线观看| 亚洲图片88| 久久久久久久久久久久久久久久久久久| mm131美女视频| 91久久大香伊蕉在人线| 亚洲综合天堂网| 欧美国产精品一二三| 5858s免费视频成人| а√天堂资源国产精品| 国产亚洲在线观看| 婷婷久久综合九色综合伊人色| 成人影院在线免费观看| 日本亚洲天堂| www.日韩高清| 成人在色线视频在线观看免费大全| 精品久久影院| 男人的天堂va| 国产精品久久网| 不卡的一区二区| av毛片在线免费| 搞黄视频免费在线观看| 黄色激情网址| 美女搡bbb又爽又猛又黄www| 国内精品视频在线播放| 国产不卡一区视频| av毛片久久久久**hd| 亚洲国产精彩中文乱码av在线播放| www.av99| 最新中文在线视频| 国产精品久久精品国产| 国产麻豆精品| 99热精品免费| 欧美毛片免费观看| 精品国产大片大片大片| 中文字幕一区二区三区乱码在线| 天堂v视频永久在线播放| 欧美视频专区一二在线观看| 一区二区三区免费在线观看| 午夜欧美视频在线观看| 亚洲激情播播| 色婷婷香蕉在线一区二区| 精品久久久久久中文字幕2017| 亚洲精品视频中文字幕| 日本电影久久久| 亚洲成人三区| 亚洲一区二区三区在线免费| 超碰日本道色综合久久综合| 欧美精品在线观看一区二区| 免费人成在线观看视频播放| 91av在线免费视频| 91在线观看免费高清| 国产呦系列欧美呦日韩呦| 婷婷五月综合激情| 欧洲一区二区三区精品| 91精品久久久久久久99蜜桃| 亚洲香蕉av在线一区二区三区| 亚洲精品蜜桃乱晃| 柠檬福利视频导航| 日韩成人激情视频| 成人搞黄视频| 亚洲品质自拍视频| 日本高清中文字幕二区在线| 免费观看亚洲视频| 亚洲自拍欧美另类| 日韩少妇与小伙激情| 免费久久一级欧美特大黄| 国产河南妇女毛片精品久久久| 视色,视色影院,视色影库,视色网| 亚洲精品白虎| 久久性色av| 一区二区三区在线|网站| 最新日韩在线| 在线播放蜜桃麻豆| 波多野在线观看| 国产精品每日更新| 99精品桃花视频在线观看| 国产精品三级在线观看无码| 日韩精品三级| 国产精品入口麻豆九色| 欧美三级自拍| 天堂在线中文网| 精品国产免费久久久久久尖叫| 在线日韩影院| 深夜福利网站在线观看| 免费一级片91| 欧美优质美女网站| 亚洲三级视频| 日本高清不卡三区| 狠狠狠综合7777久夜色撩人| 国产麻豆精品高清在线播放| 日日摸夜夜添夜夜添国产精品| 日韩中文字幕在线视频播放| 久久亚洲一区二区三区明星换脸| 国产人妻精品一区二区三区不卡| 调教视频免费在线观看| 成人在线视频网| 日韩在线麻豆| 日韩精品一区二区三区四区五区| 欧美白人做受xxxx视频| 国模大尺度视频| 国产一区二区三区在线观看| 欧美黑人疯狂性受xxxxx野外| 在线观看亚洲| 国一区二区在线观看| 国产av无码专区亚洲精品| 少妇精品视频一区二区免费看| 欧美一二三四五区| 欧美日韩精品是欧美日韩精品| 亚洲作爱视频| 欧美激情videos| 国产成人精品视频在线| 天堂а√在线最新版中文在线| 国内激情久久| 99国产精品无码| 国产精品久在线观看| 一本大道久久加勒比香蕉| 涩涩视频免费网站| av色影在线看免费| 成人乱人伦精品视频在线观看| 亚洲一区精品视频| 日韩在线不卡| 手机视频在线观看| 亚洲一级特黄| 国产欧美久久久精品免费| 最近看过的日韩成人| 亚洲一区二区三区高清不卡| 国产精品国产三级国产aⅴ原创| 成年人网站在线观看免费| 色www亚洲国产阿娇yao| 亚洲视频 中文字幕| 亚洲成人蜜桃| 国产熟女一区二区三区四区| 激情综合丝袜美女一区二区| 99视频有精品高清视频| 成人动漫在线视频| 免费在线观看a级片| 欧洲成人一区二区| 国产主播精品在线| 精品无码三级在线观看视频| 成人性色生活片| 日韩视频在线观看一区| 日本精品在线播放| 国产黄色录像视频| 国产精品久久久久av免费| 9l亚洲国产成人精品一区二三| 中文字幕资源站| 在线不卡一区| 欧美一级欧美一级在线播放| 久久久精品久久久久特色影视| 久久品道一品道久久精品| 天天干天天操天天爱| 国产精品x8x8一区二区| 美女扒开内裤让男人桶| 国产深夜男女无套内射| 久久综合伊人| 亚洲一区二区三区日本久久九| 中文亚洲字幕| 久久天天狠狠| 欧美国产中文高清| 91无套直看片红桃在线观看| 另类中文字幕国产精品| 成人黄色网址| 国产精品视区| 香蕉久久久久久av成人| 欧美日韩精品是欧美日韩精品| 中文字幕人成高清视频| 国产一级二级在线观看| 日本24小时在线高清视频| 国内精品久久久久久久久久| 国产精品第3页| 无码人中文字幕| 日本午夜视频在线观看| 精品国产综合区久久久久久| 九九免费精品视频| 91国偷自产一区二区三区的观看方式| 久久精品一区二区三区资源网| 高清国产一区二区三区四区五区| 欧美精品一线| 免费无码国产精品| 亚洲高清网站| 久久久精品国产免大香伊| 午夜一级电影| 毛片在线播放网站| 日韩三级免费观看| 国产夫妻视频| 欧美日韩亚洲一区二区三区四区| 爆乳熟妇一区二区三区霸乳| 91原创国产| 亚洲精品一区二三区不卡| 91女人视频在线观看| 狠狠操精品视频| 自拍视频亚洲| 欧美午夜丰满在线18影院| 欧美另类交人妖| 99tv成人影院| 国产剧情在线观看一区二区| 91麻豆天美传媒在线| 淫视频在线观看| 超碰免费在线观看| 欧美最猛性xxxxx直播| 午夜免费激情视频| 激情综合亚洲| 中文字幕电影av| 99国产精品免费视频| 色噜噜偷拍精品综合在线| 国产视频一区二区在线观看|