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();
~~~
- 本書目錄
- 第一章:Haxe介紹
- 互聯網開發的一個問題
- Haxe是什么,為什么產生
- Haxe編譯工具
- Haxe語言
- Haxe如何工作
- 那么Neko是什么
- Haxe和Neko的必須條件
- 本章摘要
- 第二章:安裝、使用Haxe和Neko
- 安裝Haxe
- 使用Haxe安裝程序
- 在Windows上手動安裝Haxe
- Linux上手動安裝Haxe
- 安裝Neko
- Windows上手動安裝Neko
- 在Linux上安裝Neko
- Hello world! 一式三份
- 編譯你的第一個Haxe應用
- 你的程序如何編譯
- HXML編譯文件
- 編譯到Neko
- 編譯為JavaScript
- 程序結構
- 編譯工具開關
- 本章摘要
- 第三章:基礎知識學習
- Haxe層級結構
- 標準數據類型
- 變量
- 類型推斷
- 常數變量
- 簡單的值類型
- 浮點類型
- 整型
- 選擇數值類型
- 布爾類型
- 字符串類型
- 抽象類型
- Void 和 Null
- 動態類型
- unknown類型
- 使用untyped繞過靜態類型
- 注釋代碼
- 轉換數據類型
- Haxe數組
- Array
- List
- Map
- Haxe中使用日期時間
- 創建一個時間對象
- Date組件
- DateTools類
- 操作數據
- 操作符
- Math類
- 使用String函數
- 本章摘要
- 第四章:信息流控制
- 數據存放之外
- 條件語句
- if語句
- switch語句
- 從條件語句返回值
- 循環
- while循環
- for循環
- 循環集合
- Break和Continue
- 函數
- 類的函數
- 局部函數
- Lambda類
- 本章摘要
- 第五章:深入面向對象編程
- 類和對象
- 實例字段
- 靜態字段
- 理解繼承
- Super
- 函數重載
- 構造器重載
- toString()
- 抽象類和抽象方法
- 靜態字段,實例變量和繼承
- 繼承規則
- 使用接口
- 高級類和對象特性
- 類的實現
- 類型參數
- 匿名對象
- 實現動態
- Typedef
- 擴展
- 枚舉
- 構造器參數
- 本章摘要
- 第六章:組織你的代碼
- 編寫可重用代碼
- 使用包
- 聲明一個包
- 隱式導入
- 顯式導入
- 枚舉和包
- 類型查找順序
- 導入一個完整的包
- 導入庫
- Haxe標準庫
- Haxelib庫
- 其他項目中的庫
- 外部庫
- 使用資源
- 文檔化代碼
- 離線文檔
- 在線文檔
- 單元測試
- haxe.unit包
- 編寫測試
- 本章摘要
- 第七章:錯誤調試
- trace函數
- trace輸出
- haxe的trace和ActionScript的trace
- 異常
- 異常處理
- CallStack和ExceptionStack
- 異常管理類
- 創建完全的異常處理類
- 異常類代碼
- 本章摘要
- 第八章:跨平臺工具
- XML
- XML剖析
- Haxe XML API
- 正則表達式
- EReg類
- 模式
- 定時器
- 延遲動作
- 隊列動作
- MD5
- 本章摘要
- 第九章:使用Haxe構建網站
- Web開發介紹
- Web 服務器
- 使用Web服務器發布內容
- HTML速成課程
- Haxe和HTML的區別
- NekoTools Web Server
- Apache安裝mod_neko
- Windows安裝Apache和mod_neko
- Linux安裝Apache和Mod_Neko
- 第一個Haxe網站
- 使用Neko作為網頁Controller
- neko.Web類
- Neko作為前端控制器
- 本章摘要
- 第十章:使用模板進行分離式設計
- 什么是模板
- Template類
- Template語法
- 使用資產
- 何時在模板中使用代碼
- 服務器端模板的Templo
- 安裝Templo
- 使用Templo
- haxe.Template和mtwin.Templo表達式上的區別
- Attr表達式
- Raw表達式
- 邏輯表達式
- 循環表達式
- set, fill, 和 use表達式
- Templo中使用宏
- 手動編譯模版
- 第十一章:執行服務端技巧
- 第十二章:使用Flash構建交互內容
- 第十三章:使用IDE
- 第十四章:通過JavaScript制作更多交互內容
- 第十五章:通過Haxe遠程通信連接所學
- 第十六章:Haxe高級話題
- 第十七章:Neko開發桌面應用
- 第十八章:用SWHX開發桌面Flash
- 第十九章:多媒體和Neko
- 第二十章:使用C/C++擴展Haxe
- 附加部分