最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua教程(三):值與類(lèi)型介紹

 更新時(shí)間:2015年03月28日 15:17:55   投稿:junjie  
這篇文章主要介紹了Lua教程(三):值與類(lèi)型介紹,本文起講解了Lua的八種基本類(lèi)型、userdata、thread、table等內(nèi)容,需要的朋友可以參考下

Lua 是一種 動(dòng)態(tài)類(lèi)型語(yǔ)言。 這意味著變量沒(méi)有類(lèi)型,只有值才有類(lèi)型。 語(yǔ)言中不存在類(lèi)型定義。而所有的值本身攜帶它們自己的類(lèi)型信息。

Lua 中的所有值都是一致 (first-class) 的。 這意味著所有的值都可以被放在變量里,當(dāng)作參數(shù)傳遞到另一個(gè)函數(shù)中,并被函數(shù)作為結(jié)果返回。

Lua 中有八種基本類(lèi)型: nil, boolean, number, string, function, userdata, thread, and table. Nil 類(lèi)型只有一種值 nil ,它的主要用途用于標(biāo)表識(shí)和別的任何值的差異; 通常,當(dāng)需要描述一個(gè)無(wú)意義的值時(shí)會(huì)用到它。 Boolean 類(lèi)型只有兩種值:false 和 true。 nil 和 false 都能導(dǎo)致條件為假;而另外所有的值都被當(dāng)作真。 Number 表示實(shí)數(shù)(雙精度浮點(diǎn)數(shù))。 (編譯一個(gè)其它內(nèi)部數(shù)字類(lèi)型的 Lua 解釋器是件很容易的事;比如把內(nèi)部數(shù)字類(lèi)型改作 單精度浮點(diǎn)數(shù)或長(zhǎng)整型。參見(jiàn)文件 luaconf.h 。) String 表示一串字符的數(shù)組。 Lua 是 8-bit clean 的: 字符串可以包含任何 8 位字符, 包括零結(jié)束符 (‘\0′) (參見(jiàn) §2.1)。

Lua 可以調(diào)用(和處理)用 Lua 寫(xiě)的函數(shù)以及用 C 寫(xiě)的函數(shù)(參見(jiàn) §2.5.8).

userdata 類(lèi)型用來(lái)將任意 C 數(shù)據(jù)保存在 Lua 變量中。 這個(gè)類(lèi)型相當(dāng)于一塊原生的內(nèi)存,除了賦值和相同性判斷,Lua 沒(méi)有為之預(yù)定義任何操作。 然而,通過(guò)使用 metatable (元表) ,程序員可以為 userdata 自定義一組操作 (參見(jiàn) §2.8)。 userdata 不能在 Lua 中創(chuàng)建出來(lái),也不能在 Lua 中修改。這樣的操作只能通過(guò) C API。 這一點(diǎn)保證了宿主程序完全掌管其中的數(shù)據(jù)。

thread 類(lèi)型用來(lái)區(qū)別獨(dú)立的執(zhí)行線程,它被用來(lái)實(shí)現(xiàn) coroutine (協(xié)同例程)(參見(jiàn) §2.11)。 不要把 Lua 線程跟操作系統(tǒng)的線程搞混。 Lua 可以在所有的系統(tǒng)上提供對(duì) coroutine 的支持,即使系統(tǒng)并不支持線程。

table 類(lèi)型實(shí)現(xiàn)了一個(gè)關(guān)聯(lián)數(shù)組。也就是說(shuō), 數(shù)組可以用任何東西(除了nil)做索引,而不限于數(shù)字。 table 可以以不同類(lèi)型的值構(gòu)成;它可以包含所有的類(lèi)型的值(除 nil 外)。 table 是 lua 中唯一的一種數(shù)據(jù)結(jié)構(gòu);它可以用來(lái)描述原始的數(shù)組、符號(hào)表、集合、 記錄、圖、樹(shù)、等等。 用于表述記錄時(shí),lua 使用域名作為索引。 語(yǔ)言本身采用一種語(yǔ)法糖,支持以 a.name 的形式表示 a["name"]。 有很多形式用于在 lua 中創(chuàng)建一個(gè) table (參見(jiàn) §2.5.7)。

跟索引一樣, table 每個(gè)域中的值也可以是任何類(lèi)型(除 nil外)。 特別的,因?yàn)楹瘮?shù)本身也是值,所以 table 的域中也可以放函數(shù)。 這樣 table 中就可以有一些 methods 了 (參見(jiàn)see §2.5.9)。

table, function ,thread ,和 (full) userdata 這些類(lèi)型的值是所謂的對(duì)象: 變量本身并不會(huì)真正的存放它們的值,而只是放了一個(gè)對(duì)對(duì)象的引用。 賦值,參數(shù)傳遞,函數(shù)返回,都是對(duì)這些對(duì)象的引用進(jìn)行操作; 這些操作不會(huì)做暗地里做任何性質(zhì)的拷貝。

庫(kù)函數(shù) type 可以返回一個(gè)描述給定值的類(lèi)型的字符串。

Lua 提供運(yùn)行時(shí)字符串到數(shù)字的自動(dòng)轉(zhuǎn)換。 任何對(duì)字符串的數(shù)學(xué)運(yùn)算操作都會(huì)嘗試用一般的轉(zhuǎn)換規(guī)則把這個(gè)字符串轉(zhuǎn)換成一個(gè)數(shù)字。 相反,無(wú)論何時(shí),一個(gè)數(shù)字需要作為字符串來(lái)使用時(shí),數(shù)字都會(huì)以合理的格式轉(zhuǎn)換為字符串。 需要完全控制數(shù)字怎樣轉(zhuǎn)換為字符串,可以使用字符串庫(kù)中的 format 函數(shù) (參見(jiàn) string.format)。

相關(guān)文章

最新評(píng)論

泸西县| 台江县| 垣曲县| 基隆市| 剑阁县| 迁西县| 旌德县| 文山县| 沁源县| 永定县| 新田县| 昭平县| 宝丰县| 安福县| 三明市| 奉贤区| 旌德县| 长子县| 黔东| 深泽县| 黑河市| 岢岚县| 军事| 大化| 武功县| 义马市| 凌海市| 西青区| 伊宁市| 南召县| 甘孜| 塔河县| 连平县| 宽城| 靖宇县| 眉山市| 昌江| 淮安市| 珠海市| 江华| 扎兰屯市|