zoukankan      html  css  js  c++  java
  • lua basic

    assert(condition)

    condition为nil或false,报错。反之正常执行。

    collectgarbage(opt, ...)

    手动这类GC是一件不太理想的事情,不管什么语言都是这样的,除非设计缺陷万不得已
    "collect" # 做一次完整的垃圾收集循环。
    "stop" # 停止垃圾收集器的运行。
    "restart" # 重启垃圾收集器的自动运行。
    "count" # 以 K 字节数为单位返回 Lua 使用的总内存数。
    "step" # 单步运行垃圾收集器。 步长大小由 arg 控制。
    "isrunning" # 返回表示收集器是否在工作的布尔值。
    "incremental" # 改变收集器模式为增量模式。
    "generational" # 改变收集器模式为分代模式。

    dofile(filename):

    打开该名字的文件,并执行文件中的 Lua 代码块。有返回值。

    error(message, level):

    中止上一次保护函数调用, 将错误对象message返回。 函数error永远不会返回。

    __G:

    保存全局变量,可以是任何类型。

    getmetatable(object)

    获取元表,没有为nil,有返回对象

    setmetatable(table,metatable)

    对指定 table 设置元表(metatable),如果元表(metatable)中存在 __metatable 键值,setmetatable 会失败。

    mytable = {}                          -- 普通表
    mymetatable = {}                      -- 元表
    setmetatable(mytable,mymetatable)     -- 把 mymetatable 设为 mytable 的元表
    getmetatable(mytable)                 -- 这回返回mymetatable
    

    metatable相关不在这详细展开

    ipairs (t)

    迭代table中的键值对,以非零自然数为索引,没有找到下一个就会立即中断。

    pairs (t)

    迭代table中的键值对。

    load(chunk, chunkname, mode, env)

    加载一个代码块。
    chunk可以是字符串也可以是函数

    local a = load("return 2")() --参数是一个字符串的时候,是一个函数,它的返回值是2
    local b = load(a) --当参数是一个函数的时候,会反复执行a()
    

    loadfile()

    加载文件中的代码,不运行代码

    require()

    加载文件中的代码,并且执行,调用多次也视为被调用了一次,和dofile类似

    pcall(f,arg1,arg2,...)

    传入参数,以 保护模式 调用函数 f 。 这意味着 f 中的任何错误不会抛出; 取而代之的是,pcall 会将错误捕获到,并返回一个状态码。 第一个返回值是状态码(一个布尔量), 当没有错误时,其为真。 此时,pcall 同样会在状态码后返回所有调用的结果。 在有错误时,pcall 返回 false 加错误消息。

    xpcall(function,errorfunction)

    再pcall的基础上增加了了一个错误处理函数,错误处理来自error()和assert()

    print()

    标准输出

    rawequal(v1,v2)

    在不触发任何元方法的情况下 检查 v1 是否和 v2 相等。 返回一个布尔量。相当于C语言检查两个指针是否指向同一个地址,两个数值完全相等的table,也会返回false。

    local a = {2}
    local b = {2}
    print(rawequal(a,b)) -- false
    ---------------------------------------
    local c = {1}
    local a = c
    local b = c
    print(rawequal(a,b)) -- ture
    ---------------------------------------
    local a = 1
    local b = 1
    print(rawequal(a,b)) -- ture
    ---------------------------------------
    print(rawequal(1,1)) -- ture
    --------------------------------------
    function www()
        print("ssss")
    end
    local a = www
    local b = www
    print(rawequal(a,b)) -- ture
    ---------------------------------------
    function www()
        print("ssss")
    end
    function vvv()
        print("ssss")
    end
    local a = www
    local b = vvv
    print(rawequal(a,b))  -- false
    ---------------------------------------
    local a = "www"
    local b = "www"
    print(rawequal(a,b))  -- ture
    ---------------------------------------
    local a = coroutine.create(
        function(i)
            print(i);
        end
    )
    local b = coroutine.create(
        function(i)
            print(i);
        end
    )
    print(rawequal(a,b))  -- false
    ---------------------------------------
    function c()
        print("w")
    end
    local a = coroutine.create(c)
    local b = coroutine.create(c)
    print(rawequal(a,b)) -- false
    ---------------------------------------
    local a = coroutine.create(
        function(i)
            print(i);
        end
    )
    local b = a
    print(rawequal(a,b)) -- ture
    
    

    rawget(table,key)

    获取table中的key对应的value,如果没有返回nil

    rawlen(v)

    计算数组的数据个数和字符串的长度,不支持table,和#作用相同

    rawset(table,key,value)

    支持table的key新增、修改和删除

    select(vl,...)

    lua中有一个...表示不定参数,select第第一个参数是#,表示计算...的数量。第一个参数为3,返回第三个参数,第四个参数...

    type (v)

    "number"
    "string"
    "boolean"
    "table"
    "function"
    "thread"
    "userdata"
    "nil"

    _VERSION

    返回lua的版本号

    tostring()

    接收任何类型的值并将其转换为人类可读格式的字符串。 (要完全控制数字的转换方式,请使用 string.format。)
    如果 v 的元表有一个 __tostring 字段,则 tostring 以 v 为参数调用相应的值,并将调用结果作为其结果。

    local tableA={"A","B","C"}
    local tableB={}
    tableB.__tostring=function (tab)
        local str=""
        for k,v in pairs(tab)do
            str=str..v..","
        end
        return str
    end
    
    tableA = setmetatable(tableA,tableB)
    
    print(tostring(tableA))
    --A,B,C,
    
    

    tonumber("A",进制)

    字符串转数字,进制支持2-36机制
    tonumber("A",16) -- 10

    next()

    next(t) 来检查表是否为空。
    使用next便利一个数组

    local a={1,2,3,4,5,6,7,8,9,0}
    local value
    while next(a,value) do 
        print(next(a,value))
        if value == nil then
            value = 0
        end
        value = value + 1
    end
    
  • 相关阅读:
    random(1)
    django(1)
    python复习
    bootstrap(1)
    jquery(2)
    Jquery(3)
    day17 正则表达式 re模块
    文字笔记
    MATLAB之数学建模:深圳市生活垃圾处理社会总成本分析
    MATLAB之折线图、柱状图、饼图以及常用绘图技巧
  • 原文地址:https://www.cnblogs.com/still-smile/p/14842726.html
Copyright © 2011-2022 走看看