Michelle Chen [Lua] 程式設計教學

有鑑於 Lua 學習資源的相對缺乏,故筆者撰寫此系列教學文件。本系列文章專注於 Lua 程式設計本身,而非 Solar2D 或 Cocos2d-x 或其他的 Lua 應用程式設計。

由於 Lua 是內嵌語言,Lua 程式設計會分為 Lua 程式語言和 Lua C API 兩方面;前者是學習 Lua 語法來寫程式,後者則是使用 Lua C API 將 Lua 直譯器嵌在宿主軟體 (host software)。我們目前以 Lua 語法為主,日後有機會再加入 Lua C API 的介紹。

本系列文章以網頁的方式來呈現,如果讀者比較喜歡讀實體書籍,可參考 Programming in Lua

除了 Lua 本身,我們另外提供 Solar2D 的教學。Solar2D (原 Corona SDK) 是一套以 Lua 為腳本語言的遊戲引擎 (game engine),歡迎有需要的讀者前往觀看。

文章

[Lua] 程式設計教學:實作圖 (Graph)

註:此處的圖,是指數學上的圖論 (graph theory),而非電腦圖像 (computer graphics)。 圖 (graph) 是一種非線性、非階層的資料結構,由不重覆的點 繼續閱讀

[Lua] 程式設計教學:實作二元搜尋樹 (Binary Search Tree)

樹 (tree) 是一種非線性、階層的資料結構,由於樹有數種變體,大部分教科書都會以二元搜尋樹 (binary search 繼續閱讀

[Lua] 程式設計教學:實作雜湊表 (Hash Table) 和集合 (Set)

由於 Lua 的表 (table) 內部即是雜湊表 (hash table),另外再以表重新模擬雜湊表的意義不大;請各位讀者自列參考本系列文章有關表的章節即可。 繼續閱讀

[Lua] 程式設計教學:串列 (List)、堆疊 (Stack)、佇列 (Queue)

串列是線性的 (linear) 資料結構。在 Lua 有兩種方式可以實作串列: 第一種方法等同於用陣列模擬串列,若資料更動頻繁則效率會較差;第二種方法則在精神上較接近傳統資料結構教科書的串列,在頭尾端加上資料時效率好,但隨機存取的效率較差。 繼續閱讀

[Lua] 程式設計教學:實作陣列 (Array)、向量 (Vector)、矩陣 (Matrix)

由於 Lua 僅支援 table 這種資料結構,若要在程式中使用其他資料結構,需用模擬的方式;除非資料量大,用 繼續閱讀

[Lua] 程式設計教學:建立和使用模組 (Module)

在先前的章節中,我們都將程式碼寫在同一個檔案中,隨著專案規模上升,若我們仍然用這種方式撰寫程式碼,程式碼會變得很長而不易維護。將程式碼依照功能拆開在不同的模組中,對於專案的維護會較佳。 繼續閱讀

[Lua] 程式設計教學:多型 (Polymorphism) 相關的議題

由於 Lua 是動態型別語言,不需要像 Java 等語言,利用子型別 (subtyping) 來達到多型的效果,使用內建的語法機制即可達到相同的效果。 繼續閱讀

[Lua] 程式設計教學:撰寫基於物件的 (object-based) 程式

Lua 的物件系統 (object system) 是以原型 (prototype) 為基礎,和一般 Java 或 Python 等以類別 (class) 為基礎的物件系統略為不同。 繼續閱讀

[Lua] 程式設計教學:撰寫函數式程式 (Functional Programming)

函數式程式 (functional programming) 的前提在於函式是第一階物件 (first-class objects),簡單地說,函式也可以是值 繼續閱讀

[Lua] 程式設計教學:撰寫和使用函式 (Function)

函式 (function) 將某段程式碼區塊包裝起來,並給予命名,該程式碼區塊就成為一個有意義的實體。函式可以重覆再利用,也是物件導向和模組的基礎。本文介紹函式本身,其他概念留至後文介紹。 繼續閱讀