03Lua中的数据类型

01:nil(空)
nil 类型表示一种没有任何有效值,它只有一个值 – nil,例如打印一个没有赋值的变量,便会输出一个 nil 值
对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉,执行下面

x=100
b="111"
print(x)
print(b)
x=nil
b=nil
print(x)
print(b)
--100
--111
--nil
--nil

02:bool 值
boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是"假",其他的都为"真":

if a then
print(666)
else print(888)
end
--888    a为nil 固为false

03:number
Lua 默认只有一种 number 类型 – double(双精度)类型(默认类型可以修改 luaconf.h 里的定义)

print(type(2.0))
print(type(22))
print(type(7.25555))
--number
--number
--number

调用select时,必须传入一个固定实参selector(选择开关)和一系列变长参数。如果selector为数字n,那么select返回它的第n个可变实参
否则只能为字符串"#",这样select会返回变长参数的总数

function foo(...)
for i=1,select("#",...) do
arg=select(i,...)
print("arg"..arg)
end
end
foo(4,5,6,8)

--arg4
--arg5
--arg6
--arg8

04:字符串string
字符串由一对双引号或单引号来表示
也可以用 2 个方括号 “[[]]” 来表示"一块"字符串

b="111"
a='22'
print(type(a))
print(type(b))
c=[[2222]]
print(type(c))
--string
--string
--string

“error” + 1执行报错了,字符串连接使用的是 …
在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字

a=5+"2"
print(type(a))
print(a)

--number
--7

lua提供了运行时的数字与字符串的自动转换

使用 # 来计算字符串的长度,放在字符串前面,如下实例,在一个字符串的应用操作中,lua会把这个字符串转换成一个数字

s="111"
b=s+1
print(b)
print(type(b))
112
number

lua中 … 是字符串连接操作符 当一个数字后面输入它的时候
必须要用一个空格来分割它们 ,不然lua 会将第一个点理解为一个小数点


a=10 ..1
print(a)
print(type(a))
101
string
print(#"2222222222")
--10

–字符串转为number类型

c="22"
d=tonumber(c)
print(type(d))

–number类型转换为字符串类型

a=666
print(type(a))

b=tostring(a)
print(type(b))
number
string

lua select 用法
01 …表示可选参数

function foo(...)
A={...}
print(#A)
end
foo(4,5,6,8)
--4

02 select(n, …) --数字n表示起点,select(n, …)返回从起点n到结束的可变参数,比如:
n=3,… 是 0,1,2,3,4,5

则 select(n, …) 就表示…中从第3个到最后一个的多个数:2,3,4,5。并且2,3,4,5是4个数,不是列表或其他的数据结构

所以, 下面的代码中,a = select(3,…) 就表示的是 a = 2,3,4,5。所以,a=2;


function f(...)
a=select(3,...)  --返回...第n个元素 77
print(a)
print(select(3,...)) --返回从n开始后面所有的元素 
--77	88	99	100	111
end
f(55,66,77,88,99,100,111)

03 select(’#’, …) --返回可变参数的数量

function too(...)
print(select("#",...))
end

too(111,2323,89999)
--3

04 返回可变参数数量的方法还有:


function f(...)
print(#{...})
end

f(1,44,856,68,8)
--5

function t(...)
a={...}
print(#a)
end

t(1,44,856,68,8)
--5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值