LUA教程型別和值 6

2021-10-07 23:56:40 字數 2013 閱讀 9920

lua是動態型別語言,變數不要型別定義。lua中有8個基本型別分別為:nil、boolean、number、string、userdata、function、thread和table。函式type可以測試給定變數或者值的型別。

print(type("hello world"))      --> string

print(type(10.4*3)) --> number

print(type(print)) --> function

print(type(type)) --> function

print(type(true)) --> boolean

print(type(nil)) --> nil

print(type(type(x))) --> string

變數沒有預定義的型別,每乙個變數都可能包含任一種型別的值。

print(type(a))    --> nil   ('a' is not initialized)

a = 10

print(type(a)) --> number

a = "a string!!"

print(type(a)) --> string

a = print -- yes, this is valid!

a(type(a)) --> function

1、nil

lua中特殊的型別,他只有乙個值:nil;乙個全域性變數沒有被賦值以前預設值為nil;給全域性變數負nil可以刪除該變數。

2、booleans

兩個取值false和true。但要注意lua中所有的值都可以作為條件。在控制結構的條件中除了false和nil為假,其他值都為真。所以lua認為0和空串都是真。

3、numbers

表示實數,lua中沒有整數。一般有個錯誤的看法cpu運算浮點數比整數慢。事實不是如此,用實數代替整數不會有什麼誤差(除非數字大於100,000,000,000,000)。lua的numbers可以處理任何長整數不用擔心誤差。你也可以在編譯lua的時候使用長整型或者單精度浮點型代替numbers,在一些平台硬體不支援浮點數的情況下這個特性是非常有用的,具體的情況請參考lua發布版所附的詳細說明。和其他語言類似,數字常量的小數部分和指數部分都是可選的,數字常量的例子:

4      0.4    4.57e-3       0.3e12     5e+20
4、strings

指字元的序列。lua是8位位元組,所以字串可以包含任何數值字元,包括嵌入的0。這意味著你可以儲存任意的二進位制資料在乙個字串裡。lua中字串是不可以修改的

5、functions

函式是第一類值(和其他變數相同),意味著函式可以儲存在變數中,可以作為函式的引數,也可以作為函式的返回值。這個特性給了語言很大的靈活性:乙個程式可以重新定義函式增加新的功能或者為了避免執行不可靠**建立安全執行環境而隱藏函式,此外這特性在lua實現物件導向中也起了重要作用(在第16章詳細講述)。

lua可以呼叫lua或者c實現的函式,lua所有標準庫都是用c實現的。標準庫包括string庫、table庫、i/o庫、os庫、算術庫、debug庫。

6、userdata and threads

userdata可以將c資料存放在lua變數中,userdata在lua中除了賦值和相等比較外沒有預定義的操作。userdata用來描述應用程式或者使用c實現的庫建立的新型別。例如:用標準i/o庫來描述檔案。下面在c api章節中我們將詳細討論。

原文:lua乙個小巧指令碼語言學習筆記

lua教程型別和值-6

Lua教程(三) 值與型別介紹

lua 是一種 動態型別語言。這意味著變數沒有型別,只有值才有型別。語言中不存在型別定義。而所有的值本身攜帶它們自己的型別資訊。lua 中的所有值都是一致 first class 的。這意味著所有的值都可以被放在變數裡,當作引數傳遞到另乙個函式中,並被函式作為結果返回。lua 中有八種基本型別 ni...

Lua基礎 型別和值(一)

lua是乙個動態型別的語言,沒有型別定義,每個值都有自己的型別。lua有8個基本型別,nil,boolean,number,string,userdata,function,thread,table,利用type函式可以列印出乙個給定值的型別。注意最後一行,無論x為什麼值,結果一定是string,因...

lua中文教程 第二章 型別和值

一 總覽 1 lua是動態型別語言,變數不需要型別定義。lua中有8個基本的型別,分別為 nil,boolean,number,string,userdata,function,thread,table。函式type可以測試給定變數的值或者型別。print type hello world stri...