目錄
一、數(shù)據(jù)類型
8個基本類型
1.nil(空)
2.boolean(布爾)
3.number(數(shù)字)?
4.string(字符串)
?5.table(表 )
6.function(函數(shù))
7.thread(線程)
8.userdata(自定義類型)
二、變量
全局變量、局部變量與表中的域
賦值語句
?本文章為筆者學(xué)習(xí)分享
學(xué)習(xí)網(wǎng)站:Lua 基本語法 | 菜鳥教程
一、數(shù)據(jù)類型
lua是動態(tài)類型語言,變量不需要類型定義,只需要為變量賦值。
8個基本類型
數(shù)據(jù)類型 | 描述 |
nil | 表示一個無效值(條件表達式中相當(dāng)于false) |
boolean | 包含兩個值:false和true |
number | 表示雙精度類型的實浮點數(shù) |
string | 字符串由一對雙引號或單引號來表示 |
function | 由C或者lua編寫的函數(shù) |
userdata | 存儲在變量中的C數(shù)據(jù)結(jié)構(gòu) |
thread | 表示執(zhí)行的獨立路線,用于執(zhí)行協(xié)同程序 |
table | lua中的table表其實是一個“關(guān)聯(lián)數(shù)組”,數(shù)組的索引可以是數(shù)字、字符串或表類型。在lua里,table的創(chuàng)建是通過“構(gòu)造表達式“來完成,最簡單的構(gòu)造表達式是{},用來創(chuàng)建一個空表。 |
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
1.nil(空)
含義:表示一種沒有任何有效值,它只有一個值 -- nil,例如打印一個沒有賦值的變量,便會輸出一個 nil 值。
nil作比較時應(yīng)該加上雙引號”
type(x)=="nil" --返回是“nil”字符串,是一個string類型
2.boolean(布爾)
?boolean類型只有兩個值:ture和false
lua把false和nil看作是false,其他都是true,數(shù)字0也是true
type(true)=boolean
type(flase)=boolean
type(nil)=nil
3.number(數(shù)字)?
lua默認只有一種number類型:double雙精度類型?
4.string(字符串)
字符串由一對雙引號"或單引號'來表示
可以用2個方括號"[[]]"來表示一塊字符串
?在對一個數(shù)字字符串上進行算術(shù)操作時,lua會嘗試將這個數(shù)字字符串轉(zhuǎn)成一個數(shù)字
字符串的連接使用的是兩個..
?
?使用#來計算字符串的長度,放在字符串的前面,如:
?5.table(表 )
創(chuàng)建格式:table的創(chuàng)建是通過“構(gòu)造表達式”來完成,最簡單的構(gòu)造表達式是{},用來創(chuàng)建一個空表。
通過在表內(nèi)添加一些數(shù)據(jù)來初始化表
table不會固定長度大小,有新數(shù)據(jù)添加時table長度會自動增長,沒初始的table都是nil
local tb1={} --空表
local tbl2={"1","2","3"};--初始化創(chuàng)建表
使用:lua的表其實是一個"關(guān)聯(lián)數(shù)組",數(shù)組的索引可以是數(shù)字或字符串。
local tb1={}
tb1["key"]="value"
key=10 --key=10
a[key]=22
a[key]=a[key]+11 --value=33
初始索引:默認從1開始,而不是0
6.function(函數(shù))
在lua中,函數(shù)被看作是”第一類值(First-Class Value)“
函數(shù)可以存在變量里
function可以以匿名函數(shù)(anonymous function)的方式通過參數(shù)傳遞
function A(key,val)
function(key,val) --匿名函數(shù)
7.thread(線程)
? lua內(nèi)最主要的線程是協(xié)同程序(co-routine)。它跟線程差不多,擁有自己的獨立棧、局部變量和指令指針,可以跟其他協(xié)同程序共享全局變量和塔器大部分東西。
線程與協(xié)程的區(qū)別:線程可以同時多個運行,而協(xié)程任意時刻只能運行一個,并且處于運行狀態(tài)的協(xié)程只有被掛起(suspend)時才會暫停。
8.userdata(自定義類型)
userdata是一種用戶自定義數(shù)據(jù)。用于表示一種由應(yīng)用程序或C/C++語言庫所創(chuàng)建的類型,可以將任意C/C++的任意數(shù)據(jù)類型的數(shù)據(jù)(通常是(struct和指針)存儲在Lua變量中調(diào)用。
二、變量
全局變量、局部變量與表中的域
局部變量:使用local關(guān)鍵字定義的變量,未使用local進行顯示聲明的變量是局部變量。
局部變量的作用域:從聲明處開始到所在語句塊結(jié)束
應(yīng)該盡可能的使用局部變量,有兩個好處:
- 避免命名沖突
- 訪問局部變量的速度比全局變量更快?
賦值語句
1.可以多個賦值?
格式:變量列表和值列表的各個元素用逗號分開,賦值語句右邊的值會依次賦給左邊的變量
a,b=10,2*x --a=10;n=2*x
順序:先計算右邊所有的值,然后再執(zhí)行賦值操作
a=0 --a=0
b=a+1; --(1)a+1=1,(2)b=1
變量個數(shù)和值的個數(shù)不一致,lua會以變量個數(shù)為基礎(chǔ)采取以下策略:文章來源:http://www.zghlxwxcb.cn/news/detail-437218.html
- 變量個數(shù)>值個數(shù),按變量個數(shù)補足nil
- <,多余的值會被忽略
a,b,c=0,1 --a=0,b=1,c=nil
a,b=0,1,2 --a=0,b=1
a,b,c=0 --a=0,b=nil,c=nil 這個易錯!
多值賦值經(jīng)常用來交換變量,或?qū)⒑瘮?shù)調(diào)用返回給變量,如下代碼。fun()返回的值會一次賦值給變量a、b文章來源地址http://www.zghlxwxcb.cn/news/detail-437218.html
a,b=fun()
到了這里,關(guān)于lua | 數(shù)據(jù)類型與變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!