PartⅠ 已经看完了,然后进入了partⅡ阶段了。

日期:2014.7.6

Part Ⅱ 11

Data Structures
Lua中的数据结构都是以table实现的

队列
List = {}
function List.new()return { first = 0, last = -1}
end

Lua实现push/pop 操作
push
function List.pushfirst(list,value)local first = list.first - 1list.first = firstlist[first] = value
end

function List.pushlast(list,value)local last = list.last + 1list.last = lastlist[last] = value
end

pop
function List.popfirst (list)local first = list.firstif first > list.last then error("list is empty") endlocal value = list[first]list[first] = nillist.first = first + 1return value
end

function List.poplast(list)local last = list.lastif list.first > last then error("list is empty") endlocal value = list[last]list[last] = nillist.last = last - 1return value
end

可以看到pop、push操作都是对table的键进行加减-赋值操作而实现的,要注意的是键的增减和判断是否为空。

Set and Multiset
Set结构。在table中以元素为键,布尔值为值,使用中遍历table根据键值是否为true判断某个元素是否在set、table中。这里要注意的是table的形式:setTable = {["x"] = true,["y"] = true},因为在lua 中某些词如while、for等是关键字,使用中受限,如不能直接while = true,所以改用这种形式:["while"] = true。
Multiset结构。在table中,以元素为键,值表示为该元素的出现次数:muSet[ok] = 10,表明ok出现了10次。
insert和remove操作:
Insert
function insert (bag,element)bag[element] = (bag[element] or 0 ) +1
end

--判断某个元素是否已经在set中了
--如果某个元素已经在set、table中,则增加其计数
Remove
function remove (bag,element)local count = bag[element]bag[element] = (count and count>1) and count - 1 or nil
end

--判断该元素的计数
--如果计数已经为0了,则将该键的值置为nil,收回内存使用
--如果该计数不为0是大于1的,那么将该计数减一
--如果该计数不为0但是等于1,则将该键的值置为nil,收回内存使用
String Buffers结构。使用table的concat函数。将table中的string值连接起来返回。
e.g.
local t = {}
for line in io.lines() dot[#t + 1] = line .. "\n"          --table 的每个键对应一个string值
end
local s = table.concat(t)          --将table中所有的string值连在一起返回

--使用concat函数的第二个参数
e.g.
local t = {}
for line in io.lines() dot[#t + 1] = line          --table 的每个键对应一个string值
end
local s = table.concat(t,"\n")     --第二个参数表示在每两个string值间插入的值

Graphs--没看懂讲的是啥。。。标记

转载于:https://www.cnblogs.com/zhong-dev/p/4044577.html

《Programming in Lua 3》读书笔记(九)相关推荐

  1. OREILLY Programming .NET 3.5 读书笔记之一

    OREILLY Programming .NET 3.5 读书笔记之一 <Programming .NET 3.5>是OREILLY 2008.08出版的.NET 3.5 开发书籍,作者是 ...

  2. c语言指针读书笔记,《C与指针》读书笔记九

    原标题:<C与指针>读书笔记九 指针之所以在C语言中占据很大分量,是因为指针有很大的灵活性.指针以结构体结合确实为程序的编写提供了一把锋利无比的宝剑.在有些资料上介绍结构体是多种数据集合, ...

  3. 《Programming in Scala》读书笔记(持续更新) - passover的个人空间 - DOIT博客 - 多易网...

    <Programming in Scala>读书笔记(持续更新) - passover的个人空间 - DOIT博客 - 多易网 <Programming in Scala>读书 ...

  4. 3D游戏设计读书笔记九

    3D游戏设计读书笔记九 本次作业五选一,我选择制作血条预制设计,要求如下: 分别使用 IMGUI 和 UGUI 实现 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机 分析两种实现 ...

  5. TCPIP详解Protocol 读书笔记(九) IP选路

    TCP/IP详解:Protocol 读书笔记(九) Chapter9 IP选路 文章目录 TCP/IP详解:Protocol 读书笔记(九) Chapter9 IP选路 IP选路原理简单回顾 初始化路 ...

  6. Head First设计模式读书笔记九 第十章 状态模式

    过去的笔记链接 https://blog.csdn.net/u011109881/article/details/60158137 状态模式实例 用Java设计糖果机吧 大致流程: 上图中,有四种状态 ...

  7. C专家编程--读书笔记九 再论数组

    第九章 一.知识点 1.所有作为函数参数的数组名总是可以通过编译器转换成指针. 然而,数组和指针在编译器处理时是不同的,在运行时的表示形式也是不一样的,并可能产生不同的代码.对编译器而言,一个数组就是 ...

  8. 《深入理解计算机系统》读书笔记九:寄存器结构

  9. 读书笔记九:TCP/IP详解之广播和多播,IGMP协议

    单播,多播,广播的介绍 单播(unicast) 单播是说,对特定的主机进行数据传送.例如给某一个主机发送IP数据包.这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说,就是具体网 ...

  10. 《Go语言程序设计》读书笔记 (九) 命令工具集

    Go语言的工具箱集合了一系列的功能的命令集.它可以看作是一个包管理器(类似于Linux中的apt和rpm工具),用于完成包的查询.计算的包依赖关系.从远程版本控制系统和下载它们等任务.它也是一个构建系 ...

最新文章

  1. DevOps:软件架构师行动指南3.1 概述
  2. Bossy智能便贴:让工作更有效率
  3. python快速入门答案-Python快速入门(一)
  4. android view强制重绘_android view 相关方法 layout draw 布局 重绘 | 学步园
  5. nginx负载均衡简单配置
  6. IntelliJ idea 中使用Git
  7. pojo类中list存储其他字段_List集合流处理类型小结
  8. 小程序新闻列表页面布局代码_论坛小程序·“我的”页面布局
  9. 一本通 1064:奥运奖牌计数--AC
  10. python unique函数_每30秒学会一个Python小技巧,GitHub星数4600+
  11. android message to iphone,这款应用可以将苹果的iMessage带到安卓系统
  12. putExtra方法
  13. gre填空高频词汇整理
  14. IOS学习之Segue
  15. 西门子低代码项目团队协作方法
  16. php x forwarded for,代码审计树洞X_FORWARDED_FOR注入
  17. spacy依存分析模型
  18. 银行贷款与网上借贷比较
  19. 关于Mybatisplus查询到字段无法映射的问题
  20. 《增强现实:原理、算法与应用》读书笔记(7)稠密深度估计

热门文章

  1. String及其常用API
  2. mac os 下安装mysql
  3. Struts2.0 xml文件的配置(package,namespace,action)
  4. hdu 2550 百步穿杨(大水题)
  5. 最长递增子序列和双序列
  6. 测测你写了多少行代码【转】
  7. map.entryk,v小用法(转)
  8. 我是这样在第一轮筛选简历的
  9. Android自定义动画之实现3D翻转的动画
  10. iOS 面试常问考点