美文网首页
二 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数据类型

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