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)
function too(...)
print(select("#",...))
end
too(111,2323,89999)
--3
function f(...)
print(#{...})
end
f(1,44,856,68,8)
--5
function t(...)
a={...}
print(#a)
end
t(1,44,856,68,8)
--5