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

首頁 > 開發 > 綜合 > 正文

Lua中的基本數據類型詳細介紹

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

基礎介紹

Lua是一種動態類型的語言。在語言中沒有類型定義的語法,每個值都帶有其自身的類型信息。在Lua中有8中基本類型,分別是:

1.nil(空)類型
2.boolean(布爾)類型
3.number(數字)類型
4.string(字符串)類型
5.userdata(自定義類型)
6.function(函數)類型
7.thread(線程)類型
8.table(表)類型

以上是Lua中的8中基本類型,我們可以使用type函數,判斷一個值得類型,type函數返回一個對應類型的字符串描述。例如:

復制代碼 代碼如下:

local iValue = 10
local fValue = 10.2
local strValue = "Hello World"
local funcValue = print
local bValue = true
local nilValue = nil
local tbValue = {}
 
if type(iValue) == "number" then
     print("It is a number")
end
 
if type(fValue) == "number" then
     print("It is a number")
end
 
if type(strValue) == "string" then
     print("It is a string")
end
 
if type(funcValue) == "function" then
     print("It is a function")
end
 
if type(bValue) == "boolean" then
     print("It is a boolean")
end
 
if type(nilValue) == "nil" then
     print("It is a nil")
end
 
if type(tbValue) == "table" then
     print("It is a table")
end

 

nil(空)

nil是一種類型,它只有一個值nil。一個全局變量在第一次賦值前的默認值就是nil,將nil賦予一個全局變量等同于刪除它。Lua將nil用于表示一種“無效值”的情況,即沒有任何有效值得情況。

boolean(布爾)

boolean類型有兩個可選值:false和true。一定需要注意的是,在Lua中只有false和nil是“假”的,而除此之外的都是“真”,這和其它語言有所區別的。我之前有一個同事,就吃過這個虧。

number(數字)

number類型用于表示雙精度浮點數。Lua沒有整數類型,而Lua中的數字可以表示任何32位整數。

string(字符串)

Lua中的字符串通常表示“一個字符序列”。Lua完全采用8位編碼。Lua的字符串是不可變的值。不能像C語言中那樣直接修改字符串的某個字符,而是應該根據修改要求來創建一個新的字符串。Lua的字符串和其它對象都是自動內存管理機制所管理的對象,不需要擔心字符串的內存分配和釋放。在Lua中,字符串可以高效的處理長字符串。當字符串是多行存在時,可以使用“[[]]”符號來界定一個多行字符串,同時,Lua不會解釋其中的轉義序列。例如:

復制代碼 代碼如下:

local page = [[
     <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
               <title>xxxx</title>
          </head>
          <body>
          </body>
     </html>
]]
print(page)

 

table(表)

table類型實現了關聯數組,關聯數組是一種具有特殊索引方式的數組;不僅可以通過整數來索引它,還可以使用字符串或其它類型的值(除了nil)來索引它。此外,table沒有固定的大小,可以動態得添加任意數量的元素到一個table中。

在Lua中,table既不是“值”,也不是“變量”,而是對象??梢詫able想象成一種動態分配的對象,程序中僅僅有一個隊它們的引用(指針)。table的創建是通過“構造表達式”完成的,最簡單的構造表達式就是{}。

table永遠是匿名的,一個引用table的變量與table自身之間沒有固定的關聯性,例如以下代碼:

復制代碼 代碼如下:

local a = {} -- 創建一個table,并將它的引用存儲在a
a["x"] = 10
local b = a -- b與a引用同一個table
print(b["x"])
b["x"] = 20
print(a["x"])
 
b = nil -- 現在只有a還在引用table
-- 錯誤:print(b["x"])
print(a["x"])
a = nil -- 現在不存在對table的引用

 

當對一個table的引用為0時,Lua的垃圾收集器最終會刪除該table,并釋放它所占用的內存空間。當table的某個元素沒有初始化時,它的內容就是nil;另外還可以像全局變量一樣,將nil賦予table的某個元素來刪除該元素。

在Lua中,對于a["name"]這種形式的寫法提供了一種更簡便的寫法,可以直接輸入a.name。先看看以下代碼:

復制代碼 代碼如下:

local a = {}
 
a["name"] = 10
print(a.name) -- 等價于print(a["name"])

 

這種寫法本身提供了簡便性,但是有的時候,卻給程序員帶來了困惑;我就常常會把a.x和a[x]搞錯,a.x表示a["x"],表示以字符串”x”來索引table;而a[x]是以變量x的值來索引table。通過下面這段代碼,來看看它們之間的區別:

復制代碼 代碼如下:

local a = {}
x= "y"
a[x] = 10
print(a[x])  -->10  相當于a["y"]
print(a.x)   -->nil 相當于a["x"]
print(a.y)   -->10  相當于a["y"]

 

在Lua 5.1中,長度操作符“#”用于返回一個數組或線性表的最后一個索引值。在實際項目中,我們經常使用該操作符來獲取數組或線性表的長度。但是使用該操作符是存在陷阱的,比如下面一段代碼:

 

復制代碼 代碼如下:

local a = {}
a[1000] = 1
print(#a)

 

這該輸出多少呢?

在Lua中,對于所有未初始化的元素的索引結果都是nil。Lua將nil作為界定數組結尾的標志。當一個數組有“空隙”時,即中間含有nil時,長度操作符會認為這些nil元素就是結尾標記。因為a[1] = nil,所以,對于上述代碼的輸出應該是0。所以,在處理table的時候,需要考慮這個問題。那么對于含有nil的table,如何獲取它的長度呢?我們可以使用table.maxn,它將返回一個table的最大正索引數,如下所示:

復制代碼 代碼如下:

local a = {}
a[1000] = 1
print(table.maxn(a)) -->1000

 

function(函數)

在Lua中,函數被當做值來對待,這表示函數可以存儲在變量中,可以通過參數傳遞給其它函數,還可以作為其它函數的返回值。Lua既可以調用自身Lua語言編寫的函數,又可以調用以C語言編寫的函數。Lua所有的標準庫都是用C語言寫的。我在之后,還會詳細的總結Lua中的函數的。在這里就說這么多。

userdata(自定義類型)和thread(線程)

userdata用于表示一種由應用程序或C語言庫所創建的新類型。由于userdata類型可以將任意的C語言數據存儲到Lua變量中。在Lua中,這種類型沒有太多的預定義操作,只能進行賦值和相等性測試。

thread主要用于“協同程序”,在之后會繼續總結的。這里就不做太多的總結。

總結

這篇基本就是Lua基本類型的掃盲文章,希望對大家有點用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类在线播放| 国产精品亚洲第一区| 疯狂做受xxxx高潮欧美日本| 性色av香蕉一区二区| 欧美高清在线播放| 国产精品va在线播放| 97国产精品人人爽人人做| 2019国产精品自在线拍国产不卡| 久久久精品国产亚洲| 黑人巨大精品欧美一区免费视频| 欧美在线亚洲在线| 久久久久久久久电影| 欧洲美女7788成人免费视频| 668精品在线视频| 日本久久亚洲电影| 91免费精品国偷自产在线| 亚洲国产成人久久| 国产精品免费观看在线| 国产综合福利在线| 精品久久久久久中文字幕一区奶水| 黄色91在线观看| 国产手机视频精品| 午夜精品久久久久久99热| 国产69精品久久久久9| 久久久欧美精品| 亚洲美女又黄又爽在线观看| 亚洲色图欧美制服丝袜另类第一页| 国产精品久久久久9999| 91精品国产九九九久久久亚洲| 日韩在线免费视频观看| 国产国语videosex另类| 亚洲三级黄色在线观看| 92国产精品视频| 中文字幕精品影院| 日韩av在线播放资源| 91精品久久久久久久久青青| 欧美黄色三级网站| 欧美亚洲成人xxx| 欧美日韩国产一中文字不卡| 国产精品女视频| 亚洲欧美综合v| 日韩综合中文字幕| 亚洲黄色在线看| 日韩精品日韩在线观看| 欧美第一黄网免费网站| 日韩欧美一区二区在线| 欧美老女人性视频| 日韩有码在线电影| 18一19gay欧美视频网站| 日韩精品福利在线| 欧美日韩第一页| 久久精品国产成人| 亚洲欧洲日本专区| 欧美整片在线观看| 97视频在线免费观看| 精品久久久久久久久久国产| 亚洲日本成人女熟在线观看| 91久久久久久久久久久久久| 亚洲成人免费在线视频| 国产精品1234| 91av视频在线播放| 色偷偷噜噜噜亚洲男人的天堂| 超碰97人人做人人爱少妇| 亚洲第一国产精品| 国产伦精品一区二区三区精品视频| 日韩国产高清视频在线| 午夜精品久久久久久久久久久久| 国产精品99久久久久久久久| 精品无人区太爽高潮在线播放| 欧美视频在线免费看| 欧美成人手机在线| 夜夜躁日日躁狠狠久久88av| 欧美精品成人在线| 午夜精品久久久久久久99黑人| 欧美激情精品久久久久久蜜臀| 深夜福利一区二区| 国产精品免费久久久久久| 97视频com| 第一福利永久视频精品| 成人www视频在线观看| 国产一区视频在线播放| 国产精品免费视频久久久| 国产视频精品久久久| 久久免费视频网站| 欧美国产日韩免费| 久久久久国产一区二区三区| 久久久噜噜噜久久| 亚洲一区二区三区四区在线播放| 欧美电影免费观看| 亚洲国产精品va在线观看黑人| 日韩精品有码在线观看| 国产精品老牛影院在线观看| 欧美精品久久久久久久久久| 91在线观看免费高清完整版在线观看| 欧美做受高潮1| 欧美网站在线观看| 亚洲人线精品午夜| 久久影视免费观看| 91牛牛免费视频| 国产精品电影网| 欧美重口另类videos人妖| 国产日韩视频在线观看| 欧美精品电影免费在线观看| 久久免费福利视频| 992tv在线成人免费观看| 久久国产精品电影| 国产精品99久久久久久白浆小说| 亚洲图片欧美午夜| 91九色国产社区在线观看| 日本高清+成人网在线观看| 国产成人短视频| 日韩视频免费在线| 国产精品大陆在线观看| 欧美在线观看一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 亚洲免费人成在线视频观看| 亚洲第一区在线| 日本一本a高清免费不卡| 久久69精品久久久久久国产越南| 欧美视频中文字幕在线| 一本色道久久88亚洲综合88| 久久亚洲精品网站| 国产成人在线一区| 亚洲欧洲一区二区三区久久| 97涩涩爰在线观看亚洲| 久久99精品久久久久久噜噜| 欧美日韩成人免费| 亚洲国产精品久久久久秋霞蜜臀| 精品久久久久久国产91| 亚洲精品在线91| 成人欧美一区二区三区在线湿哒哒| 久久久国产视频91| 国产精品久久久久久久久久99| 国产亚洲免费的视频看| 91中文在线观看| 国产精品偷伦视频免费观看国产| 亚洲va久久久噜噜噜| 国外成人免费在线播放| 狠狠色狠色综合曰曰| 精品美女国产在线| 国产一区在线播放| 亚洲欧美三级在线| 国产精品网站视频| 精品久久久av| 欧美国产日韩一区二区| 久久99久久99精品免观看粉嫩| 亚洲免费视频在线观看| 91av在线国产| 国产精品视频导航| 亚洲毛片在线观看.| 91国产精品电影| 日本一区二区三区四区视频| 亚洲精品自拍偷拍| 国产精品91免费在线| 精品电影在线观看| 欧美激情奇米色| 亚洲国产中文字幕在线观看| 欧美国产在线视频| 97国产在线视频| 精品网站999www| 精品偷拍各种wc美女嘘嘘| 欧美日韩国产123| 91久久国产精品| 亚洲护士老师的毛茸茸最新章节|