zoukankan      html  css  js  c++  java
  • Lua学习笔记(2)——table

    Lua中,只有一种数据结构,那就是table,即没有所谓的数组、字典、链表、队列等等,但是都可以通过table来模拟实现。
    table的写法有很多,但是大体思想也就两种
    1.

    table = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}


    2.

    table={"Sunday"="周日","Monday"="周一","Tuesday"="周二","Wednesday"="周三","Thursday"="周四","Friday"="周五","Saturday"="周六"}


    所以它看起来更像是数组+字典的结合体。
    第一种的情况下,一般都是通过索引来定位。值得一提的是,Lua跟其他语言有所不同,数组的索引默认值是从1开始的,另外就是我们可以自定义索引起始值,比如负数。但是一般不建议这么干,原因是Lua一些功能都是遵循从1开始的约定(数组的长度操作符),如果自定义索引起始值了,那么就没办法用这些功能了。此外,在遍历数组时一般都是用ipairs, for i,v in ipairs(table) do <do something> end
    第二种情况下,table都是通过key值来索引value。当然,除了nil外,其他类型的值都可以当做key。这样的情形下,通常访问table里面的元素是:table[key],但是也有另外一种写法:table.key。这两种在部分情况下是等价的,但是还是有差异的。比如说,key此时不是个值,而只是个变量。那差异就明显了

    但是table这种数据结构带给我一个困扰。比如table[1],到底是数组的第一个元素,还是key为1的元素。也就是数组跟字典傻傻的分不清楚了(囧)。当然,要分清,最好的方式参考是上下文。但是如果是这样的呢:table = {“a”,”c”;[1]=”d”,[2]=”e”},额,这个时候该怎么说?

  • 相关阅读:
    js字符串拼接 ·${}·
    [转]CRLF Injection
    域渗透-GPP(组策略)利用
    AS-REPRoasting
    域用户名枚举
    我理解的HTTP请求走私(HTTP Request Smuggling)
    NFS未授权访问
    Hessian反序列化RCE漏洞
    CVE-2020-15778 Openssh命令注入漏洞复现
    在非域内机器上运行harphound
  • 原文地址:https://www.cnblogs.com/haiyidao/p/2744054.html
Copyright © 2011-2022 走看看