(一)Lua数据类型

Lua数据类型

数据类型描述
nil只有值nil属于该类 表示一个无效值(在条件表达式中相当于false)
boolean包含两个值 false和true
number表示双精度类型的实浮点数
string字符串 由一对双引号或单引号来表示
function由C或lua 编写的函数
userdata表示任意存储在变量中的C数据结构 是一种用户自定义数据
thread表示执行的独立线路,用于执行协同程序
table一个关联数组 键值对,数组的索引 可以是数字或者字符串 最简单的表达式是{ }

简单的测试


--[[
     多行注释
     多行注释
]]--
   
-- 单行注释

print(type("hello"))
print(type(2))
print(type(type))
print(type(true))
print(type(nil))
print(type(x))
print(type(type(x)))

测试结果
string
number
function
boolean
nil
nil
string

nil(空)

nil 类型表示一种没有任何有效值 它只有一个值 nil

例如:打印一个没有赋值的变量便会输出nil

nil 有一种删除特性 给全局变量或者table 表中赋值nil 等同于删除

t1={key1="ball",key2="basketball"}
for k,v in pairs(t1) do
print(k.."-"..v)
end
t1.key1=nil
for k,v in pairs(t1) do
print(k.."-"..v)
end

结果:
key1-ball
key2-basketball
key2-basketball

nil做比较时,应该加上双引号 如:type(x)==“nil”

boolean(布尔)

boolean 类型只有两个可选值 true(值)和(false) Lua 把false和 nil 看作是假 其他都是真

print(type(true))            
print(type(false))           
print(type(nil))             

if false or nil then
print("至少一个true")
else
print("false和nil 都是false")
end

结果:
boolean
boolean
nil
false和nil 都是false

number(数字)

Lua 默认只有一种 number类型–double(双精度)类型

print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(0.2e-1))
print(type(7.8263692594256e-06))

结果:
number
number
number
number
number
number

string (字符型)

字符串由一对双引号 或者单引号 来表示

str1="this is str1"

也可以用两个方括号 [[]] 来表示一块 字符串

 html=[[
 
    这是一段文字
 ]]
 print(html)

在对一个数字字符串上进行算术操作,Lua 会尝试 将这个数字字符串转成 一个数字

print("20"+"10")

结果:30

字符串的连接符使用的是

使用 # 来计算字符串长度 放在字符串前面

table(表)

table 的创建时通过构造表达式来完成,最简单的构造表达是{},用来创建一个空表,
也可以在表里添加一些数据,直接初始化表:

local tbl1={}
local tal2={"apple","pear","orange","grape"}

数组的索引 可以是数字或者是字符串

a={}
a["key"]="value"
key1=10
a[key1]=20
for k,v in pairs(a) do
print(k.."-"..v)
end

结果:
key-value
10-20

lua里的表默认初始索引是1开始的。

lua 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的table 都是nil

fuction(函数)

递归
 function facoriall(n)
if n==0 then
return 1
else
return n*facoriall(n-1)
end
end
print(facoriall(5))

结果 120

匿名函数方式
function testFun(tab,fun)
  for k,v in pairs(tab) do
     print(fun(k,v));
  end
end

tab={"apple","orange"}
testFun(tab,function(key,val)

   return key.."-"..val;

end
)

结果:
1-apple
2-orange

thread (线程)

在 lua 最主要得是协同程序(coroutine),它跟thread 差不多
主要区别 线程可以同时多个运行,协程 任意时刻只能 运行一个,并且处于运行状态的协程只有被挂起时才会暂停。

userdata(自定义类型)

一种用户自定义数据 通常(struct 和指针)存储到lua变量中调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值