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

     

  • 相关阅读:
    java线程实现和集合类综合问题
    软件体系结构风格总结
    java如何实现对象的克隆
    24小时实现盲打(程序员快速入门)
    测试面向对象软件时,设计集成测试用例的方法
    对白盒测试的一些理解
    对于工程建模需要画的图的分析及体会
    在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
    谭静第一周任务
    陈林艳第一周任务
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8503917.html
Copyright © 2011-2022 走看看