`
daogangtang
  • 浏览: 62952 次
  • 性别: 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`类提供了设置文本颜色、大小、样式(粗体、斜体)、下划线等属性的方法...

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

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

    ubuntu 下载源source.list

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

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

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

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

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

    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...

    android-retrostreams,Android Studio 3.0 Desugar工具链Java 9 java.util.stream API的后台端口,派生自.zip

    List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); String longestName = names.stream() .filter(name -> name.length() > 5) .sorted(Comparator.comparing(String::length).reversed()) .find...

    jakarta commons-API

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

    Android 7.0 Compatibility List

    3.1. Managed API Compatibility 3.1.1. Android Extensions 3.2. Soft API Compatibility 3.2.1. Permissions 3.2.2. Build Parameters 3.2.3. Intent Compatibility 3.2.3.1. Core Application Intents 3.2.3.2. ...

    Itext API帮助文档下载.chm格式下载

    此外,`List`类则用于创建带有项目符号或编号的列表。 iText还支持从HTML和XML文件直接生成PDF。`HTMLWorker`类(在较新版本中已被`XMLWorker`取代)可以解析这些标记语言,并将其转换为PDF格式,这极大地简化了从...

    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