前言
首先介紹一下Lua語法的基礎特性:
- Lua每行代碼後不強制要求分號結束,分號可以加也可以不加
- Lua是弱類型的腳本語言
- Lua中使用 -- 代表註釋
如何查看Lua變量的類型
Lua中使用type()函數來查看變量或值的數據類型,如下:
print(type(123.0)); -- 會輸出 number
print(type(123)); -- 會輸出 number
print(type("hello world")); -- 會輸出 string
print(type(print)); -- 會輸出 function
print(type(nil)); -- 會輸出 nil
print(type(true)); -- 會輸出 boolean
空:nil
在Lua中,nil是一種類型,表示“無效值”、“空”。一個變量在聲明後(第一次賦值前)的默認值就是nil。
將nil賦給一個全局變量就相當於刪除此變量。
local num -- 聲明變量
print(num) -- 輸出nil
num=100 -- 給num變量賦值100
print(num) -- 輸出100
注意:OpenResty的Lua提口提供了一種特殊的空值(ngx.null),它表示不同於nil的“空值”。
布爾:boolean
在Lua語言中,布爾類型可選值為:true/false。
除了 nil 和 false 為“假”外,其它所有值均為“真”(數值0和空字符串也為真,和其它腳本語言有點區別)!
local a=true
local b=0
local c=nil
local d=""
if a then
print("true")
else
print("false")
end -- 輸出true
if b then
print("true")
else
print("false")
end -- 輸出true
if c then
print("true")
else
print("false")
end -- 輸出false
if d then
print("true")
else
print("false")
end -- 輸出true
數值:number
local a=12.3
local b=1.56
print(math.floor(a)) -- 輸出12
print(math.ceil(b)) -- 輸出2
字符串:string
Lua中表示字符串有三種方式:
- 使用一對單引號,如:'雲掌'
- 使用一對雙引號,如:"雲掌"
- 使用一對中括號,如:[[ab]]
另外,Lua中的字符串是“不可改變的值”,和Java一樣。
表:table
Lua中的table表類型其實和其它語言的關聯數組或者Map類似,存放的是一對一的映射關係。
索引通常是string類型或者number類型。
每一對鍵值對要用半角分號(,)分隔,最後一個元素可以不加半角分號。
未指定索引名稱的,其索引下標默認為0。
local map = {
name='張三',
age=28,
tel={'15811111111','15222222222'},
123,
[4]='key為4的值',
['city']='上海'
}
print(map) -- 輸出:table: 0x41561f90
print(map.name) -- 輸出:張三
print(map['age']) -- 輸出:28
print(map[1]) -- 輸出:123
print(map[4]) -- 輸出:key為4的值
print(map['city']) -- 輸出:上海
print(map.city) -- 輸出:上海
函數:function
在Lua語言中,函數也是一種數據類型,所以函數可以賦值給變量,也可以將函數通過參數形式傳遞給其它函數,函數也能作為其它函數的返回值。
local function demo()
print('this is a function ...')
local x=1
local y=9
return x+y
end
local a=demo
print(a) -- 輸出:function: 0x4199b0e8
a() -- 會打印出:this is a function
demo() -- 會打印出:this is a function
總結:其實有名函數本質上是匿名函數對變量的賦值,如:
function demo()
end
等價於
demo=function ()
end
再如:
local function demo()
end
等價於
local demo=function ()
end
至此,本節關於Lua的數據類型介紹講解完畢。如果對各位小主有幫助,可以關注支持一下網絡圈哦 ~
閱讀更多 網絡圈 的文章