💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
List 是最轻量级的数组类型。他们类似于Array类型,当使用Neko时可以占用更少的CPU处理能力和更小的内存需求。因为List类型提供了较少的大型功能如直接使用索引访问值等。List必须 在一个循环中检查,使用一个迭代器或者通过一个他的有效的方法,因为尝试访问List的索引访问会引起一个编译器错误。循环和迭代器在其他章节讲解。 令人惊讶的是,List 类型支持比Array更多各式混合的方法。List的主要使用时作为一个对象的容器,不会完全独立于其他的内容,它的值通常用在作为一个组来读取或者操作。为此,方法更多在批处理和迭代值得方向。lenght 和remove 方法也在其中存在,另外一些方法完全不同。 下表列出 List的可用方法: |List 字段|描述| | -- | -- | |length:Int|返回List中项的数量,只读属性| |add(item:T):Void|添加一个项到List末尾| |clear():Void|清空List| |filter(f:T->Boll):List<T>|返回一个被指定函数过滤后的列表| |first():T|返回第一个项| |isEmpty():Bool|判断是否为空| |iterator():Iterator<T>|返回List中项的迭代器| |join(sep: String):String|返回一个表示所有项通过指定分隔符连接的字符串形式| |last():T|返回最后一个项| |map<X>(f:T->X):List<X>|返回一个新的List,所有项经过函数进行处理| |pop():T|移除第一个项并返回| |push(item:T)|添加项到List的头部| |remove(v:T):Bool|移除第一个指定值的项并返回移除结果| |toString():String|返回列表的字符串表现| # 从List中添加或者移除值 * * * * * 添加至到List和添加到Array非常不同。因为索引不被支持,不能简单的传递一个值到新的索引位置。要解决这个问题,List类型提供一个 add 方法,来帮助添加一个值到下一个可用的索引位置,类似于Array 的push方法。这两个之间的差异在于add方法返回Void,而不是索引id: ~~~ var myList : List < Int > = new List(); myList.add(someValue); ~~~ 可以添加一个值到List的头部,使用 push 方法。然而,事情开始有点混乱,因为这个push和添加值到Array的方法名相同了。 ~~~ myList.push(someValue); ~~~ 和Array一样,push方法也有一个搭配的 pop 方法,会移除并返回List头部的项: ~~~ var poppedValue : Int = myList.pop(); ~~~ 和Array不同,List没有直接删除列表最后条目的方法。 # 从List中查询数据 * * * * * 如前所属,List不支持索引,所以你不能直接访问List中的某个特定项。然而,List提供了一些方法可以使你读取列表中最开始的或者最后的项,而不会移除它。即first 和last 方法。如你所愿,first方法查询第一个项,last查询最后一个项: ~~~ var firstItem : Int = myList.first(); var lastItem : Int = myList.last(); ~~~