• LUA 语言易混点


     1 --代码:
     2 
     3 tab1 = { key1 = "val1", key2 = "val2","val2", "val3" ,}
     4 for k, v in pairs(tab1) do
     5     print(k .. " - " .. v)
     6 end
     7  
     8 tab1.key1 = nil
     9 for k, v in pairs(tab1) do
    10     print(k .. " - " .. v)
    11 end
    12 
    13 --运行结果:
    14 1 - val2
    15 2 - val3
    16 key1 - val1
    17 key2 - val2
    18 1 - val2
    19 2 - val3
    20 key2 - val2

    以上说明了 lua的数组(table)是一个可以检索的数组,可以检索字符的,同时具备了json和c语言的数组,应该要比链表的效率要好点(不能快速检索,必须依靠多叉树),另一方面 table没有0,至少从1开始。两个没有有检索的普通字符,将按照先后顺序,1、2排序参照上图。print 字符串和 数字等用‘,’隔开或者使用“..”隔开,唯一区别就是后者是可字符串紧密结合的,前者有很大空间。

    table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。

    -- table_test.lua 脚本文件
    a = {}
    a["key"] = "value"
    key = 10
    a[key] = 22
    a[key] = a[key] + 11
    for k, v in pairs(a) do
        print(k .. " : " .. v)
    end
    结果:
    10 : 33
    key : value
     

    for循环的不同 k说明定位,如“KEY”,排列在前面的是检索,v是对应的数值,没有特殊检索的都是数字检索,比如 10 、 1、2.....

    -- table_test2.lua 脚本文件
    local tbl = {"apple", "pear", "orange", "grape"}
    for key, val in pairs(tbl) do
        print("Key", key)
    end
    
    结果:
    Key    1
    Key    2
    Key    3
    Key    4

    从上述可以看到,优化了print函数。

    function匿名函数

    -- function_test2.lua 脚本文件
    function testFun(tab,fun)
        for k ,v in pairs(tab) do
            print(fun(k,v));
        end
    end
    
    
    tab={key1="val1",key2="val2"};
    testFun(tab,
    function(key,val)--匿名函数
        return key.."="..val;
    end
    );

    结果:
    key1 = val1
    key2 = val2

     

  • 相关阅读:
    react 样式继承 属性传递
    react css-in-js
    react 利用高阶组件给页面加上动画
    react路由过渡动画效果
    REACT列表过度
    react 过渡动画组件
    VueJs之计算属性
    VueJs之判断与循环
    VusJs之入门
    MYSQL之数据报表
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8503917.html
Copyright © 2020-2023  润新知