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”},额,这个时候该怎么说?

  • 相关阅读:
    sqlite3 增删改查
    Charles 修改接口返回值
    矫正Django 时间不正确
    unittest 使用 HTMLTestRunner 生成测试报告
    unittest 使用例子
    pyppeteer
    linux源码编译-安装timescaledb数据库(中标麒麟+龙芯CPU) (转载)
    不会用java api对kafka topic进行创建、查询和删除,你也太out了(建议收藏)(转载)
    django 学习(转载)
    Docker 启动镜像(转载)
  • 原文地址:https://www.cnblogs.com/haiyidao/p/2744054.html
Copyright © 2011-2022 走看看