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

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

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

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

基礎介紹

Lua是一種動態(tài)類型的語言。在語言中沒有類型定義的語法,每個值都帶有其自身的類型信息。在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是“假”的,而除此之外的都是“真”,這和其它語言有所區(qū)別的。我之前有一個同事,就吃過這個虧。

number(數字)

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

string(字符串)

Lua中的字符串通常表示“一個字符序列”。Lua完全采用8位編碼。Lua的字符串是不可變的值。不能像C語言中那樣直接修改字符串的某個字符,而是應該根據修改要求來創(chuàng)建一個新的字符串。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類型實現了關聯(lián)數組,關聯(lián)數組是一種具有特殊索引方式的數組;不僅可以通過整數來索引它,還可以使用字符串或其它類型的值(除了nil)來索引它。此外,table沒有固定的大小,可以動態(tài)得添加任意數量的元素到一個table中。

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

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

復制代碼 代碼如下:

local a = {} -- 創(chuàng)建一個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。通過下面這段代碼,來看看它們之間的區(qū)別:

復制代碼 代碼如下:

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語言庫所創(chuàng)建的新類型。由于userdata類型可以將任意的C語言數據存儲到Lua變量中。在Lua中,這種類型沒有太多的預定義操作,只能進行賦值和相等性測試。

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

總結

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
69久久久久| 欧美日韩性视频一区二区三区| 另类高清dbsm日本tvav| 99reav在线| 嫩草在线播放| 大香伊人中文字幕精品| 国产精品蜜臀| 日本一二三区视频免费高清| 欧美黑人乱大交| 国产写真视频在线观看| 国产黄色片中文字幕| av中文在线| 91sp网站在线观看入口| 国产在线观看av| 中文字幕亚洲免费| 在线看黄网站| 国产一级片在线播放| 国产一区二区在线|播放| 国产一区二区三区不卡在线| 中文字幕亚洲精品视频| 亚洲天堂久久久| 男女羞羞视频在线观看| 国产福利小视频在线观看| 亚洲xxxxxx| 国产精品178页| 国产在线免费观看| h网站免费在线观看| 18成年在线观看| 国产在线精品一区二区不卡| 99在线免费观看| 国产精品视频一区二区图片| 国产在线第一页| 老鸭窝av在线| 亚洲成a人v欧美综合天堂麻豆| 国产精品白浆视频免费观看| 国产在线观看av| 免费黄网站在线观看| jizz亚洲大全| 亚洲夜夜综合| 白浆爆出在线观看| jizz亚洲大全| 狠狠插狠狠操| 国产一级粉嫩xxxx| 国产乱视频在线观看| 免费av不卡在线观看| av资源网站在线观看| a√在线视频| 午夜av在线免费观看| 五月婷婷视频在线观看| 国产美女被遭强高潮免费网站| 小说区乱图片区| 青青久在线视频免费观看| a视频免费看| 国产美女在线一区二区三区| 最近免费中文字幕大全免费第三页| 九九在线观看免费视频| 激情综合丁香| 国产性色视频| 国产成人午夜电影| 99在线播放| eeuss影院网站免费观看| 蜜桃av网站| 中文字幕在线观看av| 伊人伊人av电影| 午夜亚洲成人| 国产丝袜在线观看视频| 国产区在线看| 日本在线观看| 国产成人福利| 国产精选一区二区三区不卡催乳| 国产成人高清精品| 免费三级毛片| 99热国产在线| 丁香在线视频| 国产娇喘精品一区二区三区图片| 亚洲精品一线| 91久久精品国产性色| 九色精品视频在线观看| 亚洲天堂影院在线观看| 中文字幕麻豆| 久热中文字幕在线观看| 91涩漫在线观看c| 九九热在线播放| 亚洲夜夜综合| 精品乱码一区二区三四区视频| 91av久久| 久久久久久日本一区99| 99久久99热久久精品免费看| 日本最新在线视频| а√资源新版在线天堂| 97国产在线| 2021av在线| 国产黄色网页| 国产精品一卡二卡三卡| 麻豆国产在线视频| 国产青青视频| √天堂中文在线| 高清视频一区二区三区四区| www.xxx黄| yjizz视频网站在线播放| 午夜在线视频| 香蕉视频在线观看www| 在线视频三级| 亚洲最新永久在线观看| 国产婷婷视频在线| 国产成人夜间影院在线观看| 国产精品理人伦一区二区三区 | 午夜小视频在线| 亚洲人av在线| 女同一区二区免费aⅴ| 免费男女羞羞的视频网站中文字幕| 亚洲人成电影| 91超碰在线免费| 91中文字幕网| 在线视频二区| 男女羞羞视频在线观看| 国产美女av在线| 国产成人天天5g影院| 亚洲妇熟xxxx妇色黄| www.狠狠操.com| 91福利在线免费| 在线观看的av网站| 国产又色又爽又黄刺激在线视频| 国产一级黄色电影| 精品国产一区二区三区久久久狼牙 | 九九热精品在线视频| √天堂8资源中文在线| 在线播放www| 最近中文字幕mv2018在线高清| 国产精品yjizz视频网一二区 | 国产尤物视频在线| 91这里只有精品| 导航福利在线| 在线视频99| 国产精品人人| 美女免费视频黄| 亚洲日本久久久午夜精品| 国产区高清在线| 久久亚洲国产成人亚| 伊人永久在线| 国产一级在线观看www色| a视频免费看| 精品国产免费观看一区| 国产一区二区三区四区尤物| 欧美婷婷久久五月精品三区| 2020国产在线视频| 最新亚洲精品国自产在线观看| 四虎成人免费观看在线网址| 国产黄色免费网站| 国产婷婷视频在线| 欧美日韩一区二区三区视视频| 91美女在线| av大片在线播放| 18av在线视频| 精品国产免费第一区二区| 中文字幕一区免费| 天天操天天操一操| 日韩av成人| 国产精品爱久久久久久久小说| 国产一二三视频| 国产激情二区| 国产成人午夜电影| 2021av在线| 人日人天天爽| 天堂在线免费视频| 尤物网址在线观看| 国产一级片在线| 国产色在线观看| 国产精品乱码一区二区三区视频| 国产野外战在线播放| 国产精品久久久久久久久鸭| 国产黄色免费看| 一区二区精品区| 久久久久久久美女| 1区不卡电影| 18激情网站| 欧洲一区av| 国产性网软件大全| 在线观看免费观看在线91| 日本久久国产| 午夜不卡视频| 亚洲天堂久久久| 国产免费视频| 一本大道久久精品| 天天操天天艹| 天海翼中文字幕| 国产精品爱久久久久久久小说| av文字幕在线观看| 天堂在线一二区| 四虎免费视频| 国产精品毛片一区二区三区四区| 亚洲精品白浆| 国产亚洲精品久久久久久移动网络| 精品一区二区91| 国产美女视频一区二区三区 | 精品99又大又爽又硬少妇毛片| 欧美韩日国产| 在线播放国产区| 国产黄在线看| 中文字幕在线影院|