欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

Lua 中有八種基本類型: nil, boolean, number, string, function, userdata, thread, and table. Nil 類型只有一種值 nil ,它的主要用途用于標(biāo)表識(shí)和別的任何值的差異; 通常,當(dāng)需要描述一個(gè)無(wú)意義的值時(shí)會(huì)用到它。 Boolean 類型只有兩種值:false 和 true。 nil 和 false 都能導(dǎo)致條件為假;而另外所有的值都被當(dāng)作真。 Number 表示實(shí)數(shù)(雙精度浮點(diǎn)數(shù))。 (編譯一個(gè)其它內(nèi)部數(shù)字類型的 Lua 解釋器是件很容易的事;比如把內(nèi)部數(shù)字類型改作 單精度浮點(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)將任意 C 數(shù)據(jù)保存在 Lua 變量中。 這個(gè)類型相當(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)區(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 類型實(shí)現(xiàn)了一個(gè)關(guān)聯(lián)數(shù)組。也就是說(shuō), 數(shù)組可以用任何東西(除了nil)做索引,而不限于數(shù)字。 table 可以以不同類型的值構(gòu)成;它可以包含所有的類型的值(除 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è)域中的值也可以是任何類型(除 nil外)。 特別的,因?yàn)楹瘮?shù)本身也是值,所以 table 的域中也可以放函數(shù)。 這樣 table 中就可以有一些 methods 了 (參見(jiàn)see §2.5.9)。

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

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

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)文章

  • Lua教程(十): 全局變量和非全局的環(huán)境

    Lua教程(十): 全局變量和非全局的環(huán)境

    這篇文章主要介紹了Lua教程(十): 全局變量和非全局的環(huán)境,本文講解了老的全局變量環(huán)境和Lua5中新的非全局環(huán)境相關(guān)知識(shí),需要的朋友可以參考下
    2015-04-04
  • Lua性能優(yōu)化技巧(五):削減、重用和回收

    Lua性能優(yōu)化技巧(五):削減、重用和回收

    這篇文章主要介紹了Lua性能優(yōu)化技巧(五):削減、重用和回收,本文用多個(gè)實(shí)例講解了這三個(gè)優(yōu)化技巧,需要的朋友可以參考下
    2015-04-04
  • Lua利用cjson讀寫(xiě)json示例分享

    Lua利用cjson讀寫(xiě)json示例分享

    本文結(jié)合本人的實(shí)際使用經(jīng)驗(yàn)和代碼示例,介紹如何在Lua中對(duì)json進(jìn)行encode和decode,需要的朋友可以參考下
    2014-11-11
  • Lua中設(shè)置table為只讀屬性的方法詳解

    Lua中設(shè)置table為只讀屬性的方法詳解

    這篇文章主要給大家介紹了關(guān)于Lua中設(shè)置table為只讀屬性的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • 獲取Lua表結(jié)構(gòu)(table)數(shù)據(jù)實(shí)例

    獲取Lua表結(jié)構(gòu)(table)數(shù)據(jù)實(shí)例

    這篇文章主要介紹了獲取Lua表結(jié)構(gòu)(table)數(shù)據(jù)實(shí)例,本文使用lua_gettable函數(shù)獲取表結(jié)構(gòu),需要的朋友可以參考下
    2014-09-09
  • Lua教程(十三):弱引用table

    Lua教程(十三):弱引用table

    這篇文章主要介紹了Lua教程(十三):弱引用table,一個(gè)table的弱引用類型是通過(guò)其元表的__mode字段來(lái)決定的,如果該值為包含字符"k",那么table就是key弱引用,如果包含"v",則是value弱引用,如果兩個(gè)字符均存在,就是key/value弱引用,需要的朋友可以參考下
    2015-04-04
  • Lua返回一個(gè)Closures函數(shù)實(shí)例

    Lua返回一個(gè)Closures函數(shù)實(shí)例

    這篇文章主要介紹了Lua返回一個(gè)Closures函數(shù)實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • 如何使用Vim搭建Lua開(kāi)發(fā)環(huán)境詳解

    如何使用Vim搭建Lua開(kāi)發(fā)環(huán)境詳解

    這篇文章主要給大家介紹了關(guān)于如何使用Vim搭建Lua開(kāi)發(fā)環(huán)境的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù)

    Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù)

    這篇文章主要介紹了Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù),本文給出了多個(gè)示例講解如何在Lua中調(diào)用C/C++寫(xiě)的函數(shù),需要的朋友可以參考下
    2014-09-09
  • Lua中ipair和pair的區(qū)別

    Lua中ipair和pair的區(qū)別

    這篇文章主要介紹了Lua中ipair和pair的區(qū)別,ipair和pair都是用來(lái)遍歷table用的,需要的朋友可以參考下
    2014-09-09

最新評(píng)論