国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

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

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

Lua 是一種 動態類型語言。 這意味著變量沒有類型,只有值才有類型。 語言中不存在類型定義。而所有的值本身攜帶它們自己的類型信息。

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

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

Lua 可以調用(和處理)用 Lua 寫的函數以及用 C 寫的函數(參見 §2.5.8).

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

thread 類型用來區別獨立的執行線程,它被用來實現 coroutine (協同例程)(參見 §2.11)。 不要把 Lua 線程跟操作系統的線程搞混。 Lua 可以在所有的系統上提供對 coroutine 的支持,即使系統并不支持線程。

table 類型實現了一個關聯數組。也就是說, 數組可以用任何東西(除了nil)做索引,而不限于數字。 table 可以以不同類型的值構成;它可以包含所有的類型的值(除 nil 外)。 table 是 lua 中唯一的一種數據結構;它可以用來描述原始的數組、符號表、集合、 記錄、圖、樹、等等。 用于表述記錄時,lua 使用域名作為索引。 語言本身采用一種語法糖,支持以 a.name 的形式表示 a["name"]。 有很多形式用于在 lua 中創建一個 table (參見 §2.5.7)。

跟索引一樣, table 每個域中的值也可以是任何類型(除 nil外)。 特別的,因為函數本身也是值,所以 table 的域中也可以放函數。 這樣 table 中就可以有一些 methods 了 (參見see §2.5.9)。

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

庫函數 type 可以返回一個描述給定值的類型的字符串。

Lua 提供運行時字符串到數字的自動轉換。 任何對字符串的數學運算操作都會嘗試用一般的轉換規則把這個字符串轉換成一個數字。 相反,無論何時,一個數字需要作為字符串來使用時,數字都會以合理的格式轉換為字符串。 需要完全控制數字怎樣轉換為字符串,可以使用字符串庫中的 format 函數 (參見 string.format)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沭县| 沙河市| 玉山县| 民权县| 郓城县| 栾城县| 襄汾县| 乌兰县| 南康市| 涪陵区| 镇安县| 合作市| 鹤峰县| 岳阳县| 芦山县| 宣威市| 鄯善县| 左贡县| 武穴市| 宁化县| 崇礼县| 四会市| 温州市| 西昌市| 德安县| 高邑县| 阜平县| 修文县| 五指山市| 七台河市| 连云港市| 长兴县| 启东市| 拜泉县| 拉孜县| 来安县| 三亚市| 瑞丽市| 云阳县| 无锡市| 天水市|