`
daogangtang
  • 浏览: 62678 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

lglib.list API

阅读更多
由于lua中没有原生的list对象类型,而只有(无所不能的)table。习惯了python编程的人很可能会觉得不适应。平心而论,Python在这一点上的设计确实更傻瓜化更清晰一点,好用之处体现在两点:

  • 直接用[]来生成list对象,在代码中显得很清楚;
  • 有大量方便好用的函数能操作在list对象上,非常方便;


因此,我们希望在lua中,加入对list对象类型的支持。这个目标,在lglib中实现。

全局对象List
  lglib中,定义了一个全局对象List,它就是所有list实例的原型。使用require 'lglib'后,这个对象可以直接使用。此对象又继承自lua的原生table结构。

生成一个新的list
local lista = List()
local listb = List {1,2,3,4,5,6}


判断一个对象是否是一个list
isList(t)


产生一个序列list
List.range(start, finish)
start: 序列的起始值
finish: 序列的结束值

示例:
local a = List.range(1, 5)  -->  {1,2,3,4,5}
local a = List.range(5)  -->  {1,2,3,4,5}
local a = List.range(5, 10)  -->  {5,6,7,8,9,10}


当使用全局对象List创建了list实例后,这些实例可以使用下面的api

添加元素
list_obj:append(elem)  将新元素elem添加到列表末尾
list_obj:prepend(elem)  将新元素elem添加到列表头部
list_obj:push(elem)  将新元素elem添加到列表末尾
list_obj:insert([pos,] elem)  将新元素插入到列表的某一个位置


删除元素
list_obj:pop()  弹出列表最后一个元素,并返回此元素(此函数不是返回list_obj对象本身)
list_obj:iremove(i)  按下标索引删除第i个元素,返回list_obj对象本身
list_obj:remove(elem)  按值删除元素elem,返回list_obj对象本身


扩展list
list_obj:extends(another)  把list another与list list_obj拼接起来,仍然由list_obj进行索引
another: 另外一个list

示例:
local a = List {1,2,3}  --> a = {1,2,3}
local b = List {4,5,6}  --> b = {4,5,6}
a:extends(b)	--> a = {1,2,3,4,5,6}


注:此合并运算也可以由 a = a + b 的形式来完成。

查找
list_obj:find(val[, idx])  在list_obj中从第idx个索引起开始查找值为val的元素,返回此元素的索引

示例:
local a = List {1,2,3,7,8,9}  --> a = {1,2,3,7,8,9}
a:find(7)	--> 4


包含
 list_obj:contains(elem)  判断元素是否在list_obj中,返回true或false


计算同值元素出现次数
 list_obj:count(elem)  计算元素elem在list_obj中出现的次数


转成字符串
 list_obj:join(sep)  将列表的各元素以sep为间隔符合并成一个字符串,返回合并后的字符串


排序
 list_obj:sort(cmp)  将本列表按传入的比较函数cmp进行排序,返回自身


翻转
 list_obj:reverse()  将本列表的各元素的顺序前后翻转,返回自身


切片
 list_obj:slice(start, stop, is_rev)  将本列表的各元素的顺序前后翻转,返回自身


清空
 list_obj:clear()  将本列表清空(暂时不知道什么场合下会用到它)


求长度
 list_obj:len()  求本列表长度


删除一个区间
 list_obj:chop(i1,i2)  删除本列表中索引从i1开始到i2结束的一段,返回自身


将一个列表插入到本表中来
 list_obj:splice(idx, list)  将列表list中的所有元素依次插入到本列表从idx索引开始的地方


分享到:
评论

相关推荐

    Microsoft.WindowsAPICodePack和SHell的DLL

    例如,你可以轻松地添加自定义的跳转列表(Jump List),提供更丰富的用户交互体验。 2. **Microsoft.WindowsAPICodePack.Shell.dll**: Shell.DLL则是APICodePack中专门处理Windows Shell对象的组件,它提供了对...

    Spire.Doc API 帮助文档

    - **表格与列表**: `Table`类允许插入和操作表格,`List`类支持创建和应用项目符号或编号列表。 **4. 文本格式化** - **字体与样式**: `Font`类提供了设置文本颜色、大小、样式(粗体、斜体)、下划线等属性的方法...

    iTextsharp 5.5.13.1 API帮助.zip

    - `Paragraph`和`List`:这些类用于组织文本,创建段落和列表项。 - `Font`类:允许你定义文本的字体、大小和颜色。 3. **图像处理**: - `Image`类:用于插入图片到PDF文档中,支持多种格式如JPEG、PNG等。 - ...

    ubuntu国内镜像文件(sources.list)

    ubuntu国内镜像文件(sources.list) 下载速度还是不错的. 使用方法:把下载下来的文件覆盖/etc/apt/sources.list(原来的可以备份一下),然后 sudo apt-get update

    ubuntu 下载源source.list

    ubuntu 下载源, 网易源地址列表 ,可以直接替换/etc/apt/source.list文件更新下载源地址

    ftpClient.listFiles()返回值为空的解决方案(上一个传错了)

    解决了某些系统中,ftpClient.listFiles()返回值总是为空的问题。 使用方法如下: ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); ftpClient.configure(new FTPClientConfig(...

    解决ftpClient.listFiles()结果为空的问题

    CentOS某些版本中,JAVA代码执行ftpClient.listFiles()有时结果为空。本项目解决了这个问题。具体代码思路可以参考博客:http://blog.csdn.net/yingprince/article/details/51275956

    hibernate 3.3.1.GA API

    6. **deprecated-list.html**: 在这个文件中,开发者可以找到已经被弃用的API元素,包括类、方法和字段。了解这些元素将帮助避免在新项目中使用即将被淘汰的功能。 7. **overview-summary.html**: 这是一个框架...

    基于 AList api 开发的 Android 和 iOS 客户端.zip

    标题 "基于 AList API 开发的 Android 和 iOS 客户端.zip" 提示我们这是一个包含 Android 和 iOS 应用程序源代码的压缩包,这些应用程序是利用 AList API 构建的。AList API 可能是一个提供数据访问、列表管理或者...

    exmaple_google_oauth2_java.zip

    一套完整的 google drive... dir /b/s src\*.java > src.list javac -sourcepath src -d bin -classpath "lib/*;" @src.list copy client_secrets.json bin\ java -classpath "bin;lib/*;" com.google.oauth2.Oauth2

    精通Windows.API-函数、接口、编程实例.pdf

    6.4.1 PS API与Tool help API 176 6.4.2 遍历系统中的进程 178 6.4.3 列举进程的模块、线程 182 6.4.4 进程的堆使用、内存占用、虚拟内存大小,页面错误情况 184 6.5 动态链接库 185 6.5.1 加载、释放DLL...

    jakarta commons-API

    Commons Collections库提供了对Java集合框架的扩展,包括对List、Set、Map等接口的增强功能。例如,它提供了各种工厂方法来创建集合,以及一些实用的集合操作,如逆序、过滤、分组和转换。`Commons-collections-3.2...

    006.通用API接口规范1

    在IT行业中,API(应用程序编程接口)是软件系统之间交互的一种方式,允许不同的应用程序之间共享数据和服务。在本文中,我们将深入探讨石家庄汉德信息技术有限公司的【HD2019/B-API005】版本号V0.1的通用API接口...

    python-lichess:lichess.org API的Python客户端

    python-lichess:lichess.org API的客户端这是 的客户端库。 它被设计为: 易于使用需要时可自定义适应...list (lichess.api.users_status([ ' thibault ' , ' cyanfish ' ]))>>> online = [u[ ' id ' ] for u in user

    DRLSetListFM:setlist.fm API的Pod

    此setlist.fm API cocoapod旨在让您轻松访问setlist数据,以构建精美的应用程序。 此服务提供获取设置列表和设置列表组成部分(例如艺术家,城市,国家或地区)的方法。 要求 ...了解setlist.fm的工作方式( 和是一...

    Strut2_xwork_2.3.15.1.API.zip

    8. **deprecated-list.html**:列出所有已被弃用的API,指导开发者避免使用即将被淘汰的代码。 9. **overview-summary.html**:提供框架的概览和摘要信息,通常包括框架的目标、设计理念和主要组件。 10. **...

    swt.api chm格式

    标题"swt.api chm格式"指的是SWT API的官方文档,以CHM(Compiled Help Manual)格式存在。CHM是一种微软的压缩帮助文件格式,通常用于存放程序的API参考文档。这种格式便于离线查阅,并能快速搜索所需信息。 描述...

    Java 8 Stream API中的`Collectors.toList()`:详细解析与应用

    Collectors.toList()方法作为Stream API的一部分,提供了一种简便的方式,用于将流中的元素收集到列表中。本文将深入探讨Collectors.toList()的工作原理、使用场景、性能优化以及实际应用案例。 Collectors.toList()...

    vc_api.rar_API_VC API_VC++API_vc api_windows vc api

    3. STL:这是C++标准库的一部分,提供了通用的容器(如vector、list、map等)、算法和迭代器,是编写高效、可复用代码的关键工具。 4. Windows API:这是微软为Windows操作系统提供的编程接口,包含了大量函数和...

Global site tag (gtag.js) - Google Analytics