美文网首页
二 lua数据类型

二 lua数据类型

作者: 愤愤的有痣青年 | 来源:发表于2020-11-30 09:46 被阅读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,将变量赋值为nil等同于删除该变量.

print(a)  -->  nil
  • boolean
    falsetrue两种形式,在lua中,falsenil都是假值,其余的都是真值(包括0)
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类型
> < <= >= ==``~=,其中~=表示不等于

  • number
    表示整形integer和双精度类型float的数字, 在lua5.3以前,是不区分整形和浮点型的数字的,但在之后将这两类数字做了区分,但他们在大多的使用场景下都是兼容的
1==1.0 -->true
type(1)-->number
type(1.0)-->number
math.type(1)-->integer
math.type(1.0)-->float

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

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

  • string
    字符串,声明方式有如下三种
-- 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

  • table
    表在lua中是唯一的存储结构,所有的变量都是存储在表这样的格式中的,其可以用来表示数组/集合/结构体等功能,例如math模块,其就是一个table,math.sin指的是以 sin为key,在math中获取方法.

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

相关文章

  • Lua 完全教程

    Lua 环境安装 Lua 基本语法 Lua 数据类型 Lua 数据类型:nil(空) Lua 数据类型:boole...

  • 二 lua数据类型

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

  • 数据类型

    Lua 数据类型 lua是动态类型语言(定义变量时不用指定变量类型) lua有8个基本类型nil、boolean、...

  • Lua字符串的设计

    Lua字符串的设计 在Lua中字符串是一种被内化的数据类型。怎么理解被内化的含义呢?简单来说就是每个存放Lua字符...

  • 2017.4.28-29

    五一放假值班,打酱油了两天。 主要学习了lua的基本知识。lua的数据类型:number, string, boo...

  • Lua 基础数据类型

    Lua有8种基础数据类型:nil, boolean, number, string, function, user...

  • Lua table(表)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数字、字典等。 Lua table 使用...

  • lua表(table)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关...

  • lua数据类型

    Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、functio...

  • Lua数据类型

    Lua是一种比较自由的语言,Lua里面变量不要类型定义,只需要为变量赋值。 Lua中有8个基本类型分别为:nil、...

网友评论

      本文标题:二 lua数据类型

      本文链接:https://www.haomeiwen.com/subject/kqzaiktx.html