• Lua 学习之基础篇二<Lua 数据类型以及函数库 汇总>


    引言

    前面讲了运算符,这里主要对Lua的数据处理相关的数据类型和函数库进行总结归纳,后面会再接着单独分开讲解具体使用。

    首先因为Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

    Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

    nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)
    boolean 包含两个值:false和true
    number 表示双精度类型的实浮点数
    string 字符串由一对双引号或单引号来表示
    function 由 C 或 Lua 编写的函数
    userdata 表示任意存储在变量中的C数据结构
    thread 表示执行的独立线路,用于执行协同程序
    table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

    其他函数库部分如下:

    Part 1. String

    字符串库 (均以"string."开头)
    byte(s[,i[,j]]) 返回字符串的内部数字编码,i、j为字符串的索引,i和j限定了多少字符就返回多少值
    char(…) 吧数字编码转换为字符串
    dump(function[,strip]) 序列化函数,返回一个字符串,使用load可以反序列化该函数
    find(s,pattern[,init[,plain]]) 用来查找匹配的pattern,返回该pattern的索引,找到一个匹配就返回,如果找不到,返回nil
    format(formatstring[,value[,…]]) 格式化字符串
    match(s,pattern[,init]) 与find相同,不同在于这个返回第一个匹配的内容
    gmatch(s,pattern) 返回一个迭代器函数,每次调用这个迭代器函数都会返回一个匹配该字符串的值
    gsub(s,pattern,repl[,n]) 将每个匹配pattern的字符串替换为repl,返回替换完毕的字符串和替换次数,如果repl为函数,则用匹配到的参数作为参数调用这个函数,如果是表,则用匹配到的参数作为键去查找这个表
    len(s) 返回字符串的长度
    lower(s) 将字符串转换为小写
    upper(s) 将字符串转换为大写
    rep(s,n[,sep]) 将某个字符串自我复制链接起来,n是次数,sep为连接符
    reverse(s) 反正字符串
    sub(s,i[,j]) 截取字符串,i为起始,j为结束

    Part 2. Math

    数学库(均以“math.”开头)
    abs (x) 取绝对值
    acos(x) 反余弦函数
    asin(x) 反正弦函数
    atan2(x,y) x/y的反正切值
    atan(x) 反正切函数
    ceil(x) 不小于x的最大整数 如:x =5.8 返回 6 x=-3.5 返回3
    cosh(x) 双曲线余弦函数
    cos(x) 余弦函数
    deg(x) 弧度转角度
    exp(x) 计算以e为底x次方值
    floor(x) 不大于x的最大整数
    fmod(x,y) 取模运算
    frexp(x) 把双精度数val分解为数字部分(尾数)和以2为底的指数n
    ldexp(x,y) 计算value*2的n次方
    log10(x) 计算以10为基数的对数
    log(x) 计算一个数字的自然对数
    max(…) 取参数中的最大值
    min(…) 去参数中的最小值
    modf(x) 把数分为整数和小数
    pow(x,y) 得到x的y次方
    rad(x) 角度转弧度
    random(x[,y]) 获取随机数
    randomseed(x) 设置随机数的种子
    sinh(x) 双曲线正弦函数
    sinh(x) 正弦函数
    sqrt(x) 开平方函数
    tanh(x) 双曲线正切函数
    tan(x) 正切函数

    Part 3. Table

    Table 函数库(均以"table."开头)
    concat(table[,sep[,i[,j]]]) 将table使用sep作为连接进行连接,i和j是限定坐标
    insert(table,[pos,]value) 在的table的pos处插入value,不指定pos会在添加在表的末尾
    move(table1,f,e,t[,table2]) 将元素从table1移动到table2
    pack(…) 获取一个索引从1开始的参数表table,并会对这个table预定义一个字段n,表示该表的长度
    remove(table[,pos]) 移除table中pos上的元素,并返回这个被移除的值
    sort(table[,comp]) 对数组进行排序,没有提供排序函数,默认为<操作
    unpack(table[,i[,j]]) 返回table里的元素
    #(table) 获取table中的元素个数
    maxn(table)--已经删除,需要重写maxn方法 返回指定table中所有正数key值中最大的key值,如果不存在key值为正数的元素则返回0

    Part 4. Lua内置函数

    Lua库函数
    assert(v[,message]) 相当于C的断言功能,当v为nil或者false将处罚错误,message为发生错误时返回的信息
    collectgarbage(opt[,arg]) 用于操作垃圾收集器。opt:操作方法标志(“collect”:做一次完整的垃圾收集循环;“count”:返回当前Lua中使用的内存量(KB);“stop”:停止垃圾收集器;“restart”:重启垃圾收集器;“step”:单步执行一个垃圾收集器,步长“size”由参数arg指定;“setpause”:设置arg/100的值作为暂定收集时长;“setstepmul”:设置arg/100的值,作为步长的增幅)
    dofile(filename) 打开并且执行一个lua块
    error(message[,level]) 终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回),level参数:level=1(默认):为调用error文职(文件+行号) level=2:指出那个调用error函数的函数 level=0:不添加错误位置信息
    _G 全局环境的变量值表
    getfenv(f) 返回函数f的当前环境表
    getmetatable(object) 返回指定对象的元表(如果object的元表__metatable有值,返回__metatable,否则返回nil)
    load(func[,chunkname]) 用于加载一个数据块。从字符串或者函数中加载一个代码为方法并返回
    loadfile([filename]) 与load类似,但加载的是一个文件,如果没有指定文件名加载标准输入(stdin)的内容
    loadstring(string[,chunkname]) 与load类型,但加载的一个字符串
    next(table[,index]) 允许程序遍历表中的每一个字段,返回下一索引和该索引的值;table:要遍历的表,index:要返回的索引的前一索引号,当index为nil[]时,返回第一个索引的值,当索引号为最后一个索引或表为null是将返回nil,可以用来判定table是否为nil
    ipairs(t) 泛型for迭代器,数组遍历
    pcall(f,arg1,…) 在保护模式调用函数(即发生的错误将不会反射给调用者),当调用函数成功能返回true,失败时将返回false加错误信息
    print(…) 以tostring方式格式化输出参数的内容
    rawequal(v1,v2) 检测v1是否等于v2,此函数不会调用任何元表的方法
    rawget(table,index) 获取表中指定索引的值,此函数不会调用任何元表的发放,成功返回相应的值,当索引不存在时返回nil 注:只能用于以数字索引访问的表
    rawset(table,index,value) 设置表中指定索引的值,此函数不会调用任何元表的方法
    select(index,…) 当index为数字将返回所有index大于index的参数,当index为“#”,返回参数的总个数
    setfenv(f,table) 设置函数f的环境表为table,f可以为函数或调用栈的级别,级别1 为当前的函数,0将设置当前线程的环境表
    setmetatable(table,metatable) 设置指定table的元表metatable,如果当table有__metatable字段时,会触发错误
    tonumber(e[,base]) 将e转换为数字,不能转换返回nil,base(0~36)指出参数e当前使用的进制
    tostring(e) 将参数e转换为字符串,会触发元表__tostring事件
    type(v) 返回参数的类型
    unpack(list[,i[,j]]) 返回指定表的索引的值,i为起始索引,j为结束索引
    _VERSION 返回当前lua的版本号
    xpcall(f,err) 与pcall类似,在保护模式下调用函数,可以指定一个新的错误处理函数句柄

    Part 5. 元表

    元表方法
    __add 运算符+
    __sub 运算符-
    __mul 运算符*
    __div 运算符/
    __mod 运算符%
    __unm 运算符-(取反)
    __concat 运算符…
    __eq 运算符==
    __lt 运算符<
    __le 运算符<=
    __call 可以让table当做一个函数来使用
    __tostring 转换为字符串
    __index 调用一个索引,可以是表和方法,当调用table的一个不存在引用时,如果__index是一个table,会查找__index元方法表,若有该索引,则返回该索引的值,否则返回nil,如果__index是一个方法,会将table和索引作为参数传递给方法,return一个返回值
    __newindex 给一个索引赋值,当给table中一个不存在的索引赋值时,会调用__newindex方法
    注:rawget和rawset可以直接修改表,不会调用元表的元方法
  • 相关阅读:
    nextcloud环境搭建及部署
    docker容器内访问宿主机,访问不通 错误:Host is unreachable
    记录一下SQL的行行比较
    记录一次nginx平滑升级
    letsencrypt免费SSL证书自动续期
    守护进程因echo挂掉的原因,以及重定向标准输入、标准输出和标准错误
    openresty lua-nginx-module模块中文文档
    nginx localhost的坑
    PHP7 MongoDb的操作类
    tomcat 性能检测
  • 原文地址:https://www.cnblogs.com/xiaoqiangink/p/12082650.html
Copyright © 2020-2023  润新知