Lua应用——tables应用,查找是否为保留字
2016-04-21 12:13
288 查看
Lua中的table功能确实强大。因为table是Lua中的唯一数据结构。今天有点晕,少说两句多拷贝代码吧。
实例:
假定你想列出在一段源代码中出现的所有标示符,某种程度上,你需要过滤掉那些语言本身的保留字。一些C程序员喜欢用一个字符串数组来表示,将所有的保留字放在数组中,对每一个标示符到这个数组中查找看是否为保留字,有时候为了提高查询效率,对数组存储的时候使用二分查找或者hash算法。
Lua中表示这个集合有一个简单有效的方法,将所有集合中的元素作为下标存放在一个table里,下面不需要查找table,只需要测试看对于给定的元素,表的对应下标的元素值是否为nil。比如:
还可以使用辅助函数更加清晰的构造集合:
恩,这种方式,用的地方不少哦
实例:
假定你想列出在一段源代码中出现的所有标示符,某种程度上,你需要过滤掉那些语言本身的保留字。一些C程序员喜欢用一个字符串数组来表示,将所有的保留字放在数组中,对每一个标示符到这个数组中查找看是否为保留字,有时候为了提高查询效率,对数组存储的时候使用二分查找或者hash算法。
Lua中表示这个集合有一个简单有效的方法,将所有集合中的元素作为下标存放在一个table里,下面不需要查找table,只需要测试看对于给定的元素,表的对应下标的元素值是否为nil。比如:
reserved = { ["while"] = true, ["end"] = true, ["function"] = true, ["local"] = true, } for w in allwords() do if reserved[w] then -- `w' is a reserved word ...
还可以使用辅助函数更加清晰的构造集合:
function Set (list) local set = {} for _, l in ipairs(list) do set[l] = true end return set end reserved = Set{"while", "end", "function", "local", }
恩,这种方式,用的地方不少哦
相关文章推荐
- Lua从入门到放弃--文件I/O
- 极客学院lua文档
- Lua协程(coroutine)的基本知识
- 基于 lua-resty-upload 实现简单的文件上传服务
- Lua的闭包
- Lua中的元表和元方法
- UVA_327_Evaluating Simple C Expressions
- VS 2013 编译 Lua 5.3
- 字符估值器CharEvaluator
- Notepad++中调试用心lua程序
- Lua从入门到放弃--打印表Demo
- Lua中的操作系统库
- Lua从入门到放弃--元表(操作符)
- 浅析 Android 动画:自定义 Interpolator 与 TypeEvaluator
- Lua从入门到放弃--元表
- Lua math库
- lua C++对象内存管理
- Lua根据秒数返回时间串00:00:00
- Thrift lua example
- Lua学习笔记