「Lua」04節-基礎數據類型

前言

首先介紹一下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
「Lua」04節-基礎數據類型

數值: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) -- 輸出:上海
「Lua」04節-基礎數據類型

函數: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

「Lua」04節-基礎數據類型

總結:其實有名函數本質上是匿名函數對變量的賦值,如:

function demo()
end

等價於

demo=function ()
end

再如:

local function demo()
end

等價於

local demo=function ()
end

至此,本節關於Lua的數據類型介紹講解完畢。如果對各位小主有幫助,可以關注支持一下網絡圈哦 ~


分享到:


相關文章: