国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

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

Lua中基本的數據類型、表達式與流程控制語句講解

2024-07-21 23:05:02
字體:
來源:轉載
供稿:網友

1. Lua類型
1.1 基本類型

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

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

1.2 各類型要注意的地方

關于boolean:

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

該類型用于表示實數(雙精度double),整數也用此類型表示。
關于string:

字符串不能像C語言一樣直接修改某個字符,必要時應通過string庫創(chuàng)建一個新的字符串。字符串可以用一對匹配的單引號或雙引號來界定。可以實用類C語言的轉義序列。

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

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

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

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

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

“#”可用于返回一個數組的最后一個索引值(或其大小)。例如print(a[#a])打印列表a的最后一個值,a[#a+1] = io.read()讀入一個值并插入到列表a末尾。注意,Lua將nil作為界定數組結尾的標志,當一個數組中間含有nil時,#會認為第一個nil就是結尾,因此應避免對含“空隙”的數組使用#。

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

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

2.2. 關系操作符

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

2.3. 邏輯操作符

邏輯操作符有and、or和not。對and(or)來說,若第一個操作數為假(真),就返回第一個操作數,否則返回第二個操作數。如print(4 and 5) –> 5,print(false or 5) –> 5。

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

2.4. 字符串連接符

可用“..”(兩個點)來連接兩個字符串,若其中任一個為數字,Lua會自動轉換,如print(0 ..1) –> 01。連接字符串只會創(chuàng)建一個新字符串,不會對原操作數進行修改。

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

數據類型,Lua,表達式,流程控制,語句

2.5. Table構造式

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

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

3. 順序結構
3.1. 賦值

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

3.2. 局部變量與程序塊

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

注意,在交互模式中每行輸入內容自身就形成了一個程序塊,因此單句local聲明沒有效果。可以顯式界定一個塊,將內容放入一對do-end關鍵字中即可,這個方法也可以用于嚴格控制某些局部變量的作用域。

有一種習慣寫法local foo = foo,創(chuàng)建一個局部變量foo并用全局變量foo的值初始化它。若后續(xù)其他函數改變全局變量foo的值,可以在這里先將其保存起來。

4. 控制結構
所有控制結構語句都有一個顯示的終止符:if、for、和while以end結尾,repeat以until結尾。

4.1. if then else(elseif)語句

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

4.2. while和repeat語句

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

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

4.3. 數字型for語句

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

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

4.4. 泛型for語句

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

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

4.5. break和return語句

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
青青在线视频| 国产羞羞视频在线播放| 伊人影院在线观看| 18激情网站| 四虎成人精品在永久在线观看| 99爱视频在线观看| 青青草在线免费观看| 日本一本久久| 天天操人人干| 中文在线官网天堂| av中文在线| 国产在线资源| 99高清免费国产自产拍| 久久香蕉av| 91xxx在线观看| 99中文字幕一区| 九九视频精品在线| 国产精品免费91| 日本调教视频在线观看| 国产秀色在线www免费观看| 国产夫妻视频| 成人免费一区二区三区牛牛| 国产成人精品自线拍| 久热免费视频| 午夜影院免费| 在线黄色国产电影| 国产偷窥洗澡视频| 国产美女av在线| av免费在线观| 天天操天天艹| 另类视频在线| 亚洲91av| av在线1区2区| 精品日韩av| 91在线网址| 国产国产人免费人成免费视频| 免费99热在线观看| 一区二区三区四区在线免费视频| 国产一级在线观看www色| www狠狠操| 男人天堂亚洲| 日本免费黄色| 青青草免费在线观看| 精品无人乱码| 中文字幕av中文字幕| 九九热视频在线| 黄网址在线永久免费观看| wwww亚洲| 久久91精品视频| 开心快乐六月丁香婷婷| 亚洲sss视频| 天天草天天干| www在线视频观看| 黄色免费av| 国产精品自产拍在线网站| 国产精品臀控福利在线观看| 超碰免费在线播放| 高清av中文在线字幕观看1| 福利在线观看| 国产一区二区三区美女秒播 | 中文字幕在线免费看| 国产精品外围在线观看| 国产精品免费麻豆入口| 中文乱码字幕高清在线观看| 永久免费av片在线观看全网站| 精品视频麻豆入口| 亚洲一区免费在线| 超碰国产在线| 国产高清视频在线| sese在线视频| 国产香蕉视频在线观看| 国产精品麻豆一区二区三区 | 国产午夜电影| 精品一区二区三区免费站| 热99在线观看| 国产色婷婷在线| www.狠狠| 91最新在线| 中文字幕在线影院| 亚洲成av人影片在线观看| 国产网站av| 成年网在线观看免费观看网址| 国产高清一区二区三区视频| 麻豆精品免费视频入口| 国产精品久久久久久福利| 精品国产美女福利到在线不卡| 日本高清中文字幕在线 | 黄色片视频在线观看| 国产精品一二三区视频| 亚洲成人在线播放| 国产白浆在线| 中文字幕成人乱码在线电影| gogo在线观看| 精品卡1卡2卡三卡免费网站| 大香伊人中文字幕精品| 欧美日韩在线视频免费观看| 樱花草在线观看www| 中文字幕麻豆| 欧美艹逼视频| 日p在线观看| 午夜在线视频| 亚洲综合天堂网| 一个人看的www免费观看视频| 国产精品免费视频一区一| 激情网站在线| 豆国产97在线|亚洲| 国产主播色在线| 黄网站在线观看高清免费| 超碰免费97在线观看| 久久久久国产精品嫩草影院| 男人天堂v视频| 久草福利资源在线视频| 国产在线一二三区| 黄色网页网址在线免费| 日本视频在线| 成人av小说网| 国产欧美黑人| 97最新国自产拍视频在线完整在线看 | 国产娇喘精品一区二区三区图片| 天堂资源在线中文| 国产天堂素人系列在线视频| 国产激情网址| 国产超级va在线视频| 性网站在线看| www中文字幕在线观看| 国产免费专区| 99中文字幕一区| 最好看更新中文字幕| 中文字幕av高清| 成年午夜在线| 伊人影院在线播放| 国产有码在线| 2020国产在线视频| 开心婷婷激情| 精品国内自产拍在线视频| av在线免费观看网| √天堂中文在线| av亚洲在线| 国产人成网在线播放va免费| 青青青青在线| 99热99re6国产在线播放| 青青草在线播放| 97福利电影| 最近中文字幕大全中文字幕免费| 在线黄色.com| 国产成人综合亚洲欧美在| 欧美精品小视频| 中文国产字幕在线观看| 国产调教视频在线观看| 狠狠干婷婷色| 超碰免费在线播放| av三级在线观看| 国产三级在线免费| 超碰免费在线播放| 日本三级视频网站| 亚洲成人在线播放| 在线观看国产视频| 国产黄色一级电影| 国产视频中文字幕在线观看| 热99re久久精品这里都是免费| 中文乱码字幕高清在线观看| 国产精品美女一区二区视频| 日本中文字幕高清视频| eeuss影院在线| jizz国产| 女同一区二区免费aⅴ| www在线视频观看| 亚洲视频精品在线观看| 国产黄色免费看| 国产福利免费观看| 国产精品福利视频一区二区三区| 国产一区二区三区不卡免费观看| 国产精品一区二区三区视频网站| 国产一区在线视频观看| 二人午夜免费观看在线视频| 国产蜜臀av在线播放| √天堂资源地址在线官网| 国产三级av在线| 国产精品美女视频免费观看软件| 国产成人福利| 日本卡一卡2卡3卡4精品卡网站| 黄色毛片在线| 国产视频中文字幕在线观看| 18成年在线观看| 日本欧洲一区| 国产探花视频在线观看| 91精品国产高久久久久久五月天| 亚洲网站一区| 国产精选在线观看| 国产成人精品18| 俺来俺也去www色在线观看| 成人日韩欧美| av在线1区2区| 国产一级片在线| 天天干天天摸| 6699久久国产精品免费| 日本视频在线| 国产青青草在线| а天堂8中文最新版在线官网| 中文字幕国产视频|