zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    创建ros的程序包--3
    ROS文件系统介绍--2
    安装并配置ROS环境1
    ros-indigo-desktop-full安装到ubuntu14.04
    嵌入式声卡应用分析---18
    linux用户态定时器的使用---19
    tiny4412 linux+qtopia nfs网络文件系统的挂载
    ActiveMQ
    Web.xml配置详解之context-param
    Spring MVC的多视图解析器配置及与Freemarker的集成
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8503917.html
Copyright © 2011-2022 走看看