第二章 標準語法

2.2 值與類型

Lua 是一種 動態類型語言這意味着變量沒有類型,只有值纔有類型。所有的值都可以被放在變量裏,當作參數傳遞到另一個函數中,並被函數作爲結果返回。(變量不需要定義)


Lua 中有八種基本類型

 nilbooleannumberstringfunctionuserdatathread, table

2.2.1 nil類型

nil 類型只有一種值 nil ,它的主要用途用於標表識和別的任何值的差異;通常,當需要描述一個無意義的值時會用到它。


2.2.2 boolean類型

(1) boolean只有兩種值:false  true

(2) nil  false 都能導致條件爲假;而另外所有的值都被當作真。

(3) lua中認爲0空字符串都爲真。

2.2.3 number類型

Number 只表示實數,lua中沒有整型。

(編譯lua時,可以使用長整數或者單精度浮點型代替數值類型)

可以支持到小數點後14位數

2.2.4 string類型

String 表示一串字符的數組。 Lua 8-bit clean 的:字符串可以包含任何 8 位字符,包括零結束符 ('\0')

2.2.4.1 長括號定義

前面提到引號(‘’、“”)還可以用一種長括號括起來的方式定義


使用區別


2.2.4.2 自動轉換

運行時,Lua會自動在stringnumbers之間自動進行類型轉換,當一個字符串使用算術操作符時,string就會被轉成數字。


反過來,當Lua期望一個string而碰到數字時,會將數字轉成string

..Lua中是字符串連接符,當在一個數字後面寫..時,必須加上空格以防止被解釋錯。

2.2.4.3 函數轉換

tonumber()函數

tostring()函數


2.2.5 function類型

(1) Lua可以調用(和處理)用 Lua 寫的函數以及用 C 寫的函數

(2)函數是第一類值(和其他變量相同),意味着函數可以存儲在變量中,可以作爲函數的參數,也可以作爲函數的返回值。


函數名和函數加括號的不同

2.2.6 userdata類型

userdata 類型用來將任意 C 數據保存在Lua 變量中。 userdataLua中除了賦值和相等比較外沒有預定義的操作。

Lua可以調用lua或者C實現的函數,Lua所有標準庫都是用C實現的。標準庫包括string庫、table庫、I/O庫、OS庫、算術庫、debug庫。

2.2.7 thread類型

thread 類型用來區別獨立的執行線程。

2.2.8 table類型

(1)關聯數組可以用任何東西(除了nil)做索引,而不限於數字。

(2)table可以以不同類型的值構成;它可以包含所有的類型的值(除 nil 外)。

(3) table lua 中唯一的一種數據結構。

(4)支持以a.name 的形式表示 a["name"]

(5)跟索引一樣, table 每個域中的值也可以是任何類型(除 nil外)。特別的,因爲函數本身也是值,所以 table 的域中也可以放函數。

2.2.9 獲取變量類型的函數

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章