Lua变量类型(三)
Lua是动态类型语言。定义变量时不需要指定类型,可以根据变量的值来区分变量类型。
Lua一种8中基础类型,分别是Nil
、Boolean
、Number
、String
、Userdata
、Function
、Thread
、Table
。
函数type
可以根据变量值来获取变量的类型。
$ lua
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> type(nil)
nil
> type(true)
boolean
> type(false)
boolean
> type(10.4)
number
> type(10.4*3)
number
> type(io.stdin)
userdata
> type(print)
function
> type(type)
function
> type({})
table
> type(type(X))
string
> os.exit()
Nil
Nil类型只有一个值nil
。nil
的基本属性是不同于任何值。Lua以nil
来表示一种非值,类似于C语言中的NULL。
全局变量默认值为nil
,不分配内存。可以通过给全局变量赋值nil
用以删除它。
Boolean
Boolean类型有两个值,true
和false
,表示传统类型的布尔值。
Lua中并不是只有Boolean类型才可以作为判断条件,而是任何值都可以作为一种条件。
条件判断中将Boolean值false
和Nil值nil
视为假,其余值都视为真。Lua在条件判断中将0和空字符串也是为真。
Lua支持的逻辑运算符:and
、or
以及not
。所有逻辑运算符都将false
和nil
是为假,其余视为真。
and
:如果第一个操作数为假,其结果为第一个操作数;否则结果为第二个操作数。
or
:如果第一个操作数为真,其结果为第一个操作数;否则结果为第二个操作数。
示例如下:
$ lua
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> 4 and 5
5
> nil and 13
nil
> false and 13
false
> 0 or 5
0
> false or "hi"
hi
> nil or false
false
> not nil
true
> not false
true
> not true
false
> not 0
false
> not 1
false
> not not 0
true
> not not false
false
> os.exit()
Lua在非必要的情况下不会计算第二个表达式的值。 这样i !=0 and a/i > b
不会出错。
Number
数字表示
数字常量由可选的十进制部分和可选的十进制指数组成。
带有小数点或指数的为浮点数,其余为整数。整数和浮点数都为number
类型。
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> 4
4
> 0.4
0.4
> 4.57e-3
0.00457
> 0.3e12
300000000000.0
> 5E+20
5e+20
> type(3)
number
> type(3.0)
number
> type(3e10)
number
> os.exit()
整数和浮点数是可以相互转化的,并且根据值判断是否相等。
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> 3==3.0
true
> -3==-3.0
true
> 0.2e3==200
true
> os.exit()
当需要区分浮点数和整数类型时可以使用math.type
。
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> math.type(3)
integer
> math.type(3.0)
float
> os.exit()
不同于其他语言,Lua也支持十六进制浮点数,十六进制浮点数由一个分数部分和一个二进制指数(p
或p2
)组成。
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> 0xff
255
> 0x1A3
419
> 0x0.2
0.125
> 0xa.bp2
42.75
> 0x1p2
4.0
> 0x0.1
0.0625
> os.exit()
运算符
数学库
随机数
四舍五入
限制
数字转换
优先级
Strings
Tables
Functions
- 原文作者:生如夏花
- 原文链接:https://blduan.top/post/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/lua/lua%E5%8F%98%E9%87%8F%E7%B1%BB%E5%9E%8B/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。