二 lua数据类型

2020-11-30  本文已影响0人  愤愤的有痣青年

变量

lua中变量有两类,一类是全局变量,此为变量的默认形式 ,二是局部变量,需要使用local来声明

变量的赋值有如下形式:

# 1 先声明后赋值
local a
a='A'
print("1:",a)  --> 1:   A

#  2 直接赋值
a='B'
print('2:', a) -->  2: B

# 3 多变量赋值
a,b = 'C', 'D'
print("3:", a,b) -->  3:    C   D

# 4 多变量赋值(2)
a,b = "E"
print("4:", a,b)  -->  4:   E   nil

数据类型

在lua中有nil, boolean, number, string, function, userdata, thread,和 table.

可以使用type()函数查看变量的数据类型,例如

print(type(1)) --> number
print(type(type(1))) -->  string

nil表示空值,对于任何未赋值/未声明的变量,其值都为nil,将变量赋值为nil等同于删除该变量.

print(a)  -->  nil
a= true
print(a)   --> true

常见的逻辑运算符有and or not
and的运算结果为,如果第一个操作数为false,则返回第一个操作数,否则返回第二个操作数
or的运算结果为,如果第一个操作数不为false,则返回第一个操作数,否则返回第二个操作数

> 4 and 5 --> 5
> nil and 13 --> nil
> 0 or 5 --> 0
> false or 'hi' -> 'hi'
> nil or false -> false

lua中对于booleam值的比较有如下几种运算符,其得到的结果都是booleam类型
> < <= >= ==``~=,其中~=表示不等于

1==1.0 -->true
type(1)-->number
type(1.0)-->number
math.type(1)-->integer
math.type(1.0)-->float

lua中有一个数据库math,其可以进行数学相关的运算,还可以取随机数函数/取整函数等功能.

数字转字符串可以使用tostring函数

-- 1. 单引号
a= `a`
print(a) -->  a

-- 2. 双引号
b = "b"
print(b)  -->  b

-- 3. 双重中括号[[]],此种方式可以声明多行的字符串,如果字符串中可能出现`]]`符号,那么在声明字符串时可以使用一定数量的`=`号来处理,如下:
c = [[
print("12345")
]]
print(c)  -->  print("12345")

d=[==[
print(d[[1]])
]==]

print(d) -->print(d[[1]])

字符串的拼接采用..,例如

print("1234"..567) -->  1234567

lua中的+号只用来表示数值运算,不能用来拼接字符串,但对于"1"+"2"这样的表达式时,lua会尝试将其转换为1+2进行运算,如果不能转换为数字,则会报错

计算字符串的长度可以使用#符号,例如print(#"abc")将输出3,不过对于中文,此处输出的是中文数*2的长度,例如print(#'测试123')将输出7

字符串转数字可以用tonumber函数来实现,如果字符串不能转换为数字,则返回nil

> tonumber('1') --> 1
> tonumber('1.0') --> 1.0
> tonumber('  1   ') --> 1
> tonumber('a') --> nil

也可以通过tonumber(str, 进制数)来将指定进制的字符串转为十进制数,例如tonumber("12", 16) -->18

lua中table没有深拷贝功能,因此拷贝只能拷贝对象的应用.
后续会重点写一下表相关的知识

上一篇 下一篇

猜你喜欢

热点阅读