TOP
0
0
【23號簡體館日】限時三天領券享優惠!!
Lua程序設計(第4版)(簡體書)
滿額折
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)
Lua程序設計(第4版)(簡體書)

Lua程序設計(第4版)(簡體書)

人民幣定價:89 元
定  價:NT$ 534 元
優惠價:87465
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
目次

商品簡介

本書由 Lua 語言作者親自撰寫,針對 Lua 語言本身由淺入深地從各個方面進行了完整和細緻的講解。作為第 4 版,本書主要針對的是 Lua 5.3,這是本書撰寫時 Lua 語言的最新版本。作者從語言使用者的角度出發,講解了語言基礎、編程實操、高級特性及 C 語言 API 等四個方面的內容,既有 Lua 語言基本數據類型、輸入輸出、控制結構等基礎知識,也有對模塊、閉包、元表、協程、延續、反射、環境、垃圾回收、函數式編程、面向對象編程、C 語言 API 等高級特性的系統講解,還有對 Lua 5.3 中引入的整型、位運算、瞬表、延續等新功能的細緻說明。

推薦序一
Lua 這種類似於“膠水”的語言在遊戲行業被廣泛應用。我已經在遊戲行業摸爬滾打了 很多年,對遊戲行業的變化之快深有體會:遊戲策劃時常更改設計是行業特點,工程師必須 把“不要寫死,要能熱更”這句話刻在心裡。因此在做開發時,大家喜歡把邏輯放在 Lua 這 種嵌入型語言中,一方面是因為 Lua 性能好,另一方面主流引擎都支持通過推送 Lua 腳本來 實現熱更新,這樣在修改 Bug 或者更新內容時,用戶就不需要重新下載整個遊戲安裝包。並 且 Lua 上手難度不高,所以很多初入遊戲行業的程序員往往先學 Lua。但是,Lua 的中文學 習資料很有限,社區上的知識比較零碎,為數不多的英文書翻譯本也質量平平或其中所講的 版本已經過時,增加了初學者系統學習 Lua 的難度。所以,現在我們手中的這本用心打磨的 譯本,無疑是初學者的福音。 翻譯一本有用的但不蹭熱點的書,就像我們開發一款源自內心的喜愛卻不跟風的遊戲, 也許不會成為爆款,但是總會對得起自己,也總能收穫一群用戶的喜愛。這本《Lua 程序設 計(第 4 版)》,體現了譯者的“傻勁”――不追捧熱點、專注自己想做的事情。這種“傻勁” 是這個時代稀缺的。然而讀者也好,遊戲用戶也好,往往就喜歡這種“傻人”和他們的“傻 勁”,我真心希望這樣的“傻人”“傻勁”能多一些。 譯者還計劃要做一個 Lua 的社區,歡迎大家關注,也歡迎推薦給身邊的朋友,獨樂樂不 如眾樂樂。最後,開卷有益,祝大家學習愉快。
焦洋 蓋婭互娛 CTO

推薦序二
這幾年來,由於閱讀 Lua 虛擬機實現源碼的緣故,我深入瞭解了 Lua 的很多內部實現原 理。Lua 作為一門誕生已經超過 20 年的語言,在設計上是非常克制的,以 Lua 5.1.4 版本來 說,這個版本是 Lua 發展了十幾年之後穩定使用了很長時間的版本,其解釋器加上周邊的庫 函數等不過就是一萬多行的代碼。 在設計上,Lua 語言從一開始就把簡單、高效、可移植、可嵌入、可擴展等作為自己的 目標。打一個可能不是太恰當的比方,Lua 語言專注於做一個配角,作為膠水語言來輔助像 C、C++ 這樣的主角來更好地完成工作,當其他語言在前面攻城拔寨時,Lua 語言在後方實 現自己輔助的作用。現在大部分主流編程語言都在走大而全的路線,在號稱學會某一門語言 就能成為所謂的“全棧工程師”的年代,Lua 語言始終恪守本分地做好“膠水語言”的本職 工作,不得不說是一個異類的存在。 “上善若水,水善利萬物而不爭”,這大概是我能想到的最適合用於來描述 Lua 語言設計 哲學的句子。 然而,我發現想找到一本關於 Lua 語言本身設計相關的書籍卻很難。打開任何一個電商 網站,以關鍵字“Lua”來進行搜索,能找到的相關書籍大多是如何基於 Lua 做應用開發,如 遊戲、OpenResty 等。在 2008 年,國內曾引進並翻譯了《Lua 程序設計(第 2 版)》。然而, 這一本書已經絕版不再印刷,而且 Lua 在這些年裡也發生了不少的變化,從當時的 5.1 版本 到了現在的 5.3 版本,也在更多領域有了廣泛的應用。此時,引進並且翻譯最新版本的《Lua 程序設計(第 4 版)》就顯得很有必要了。 推薦那些常年要與 Lua 打交道的應用開發者都讀一下這本由 Lua 創作者親自編寫的 《Lua 程序設計(第 4 版)》,系統瞭解一下這門精緻的語言,這不但對於深入理解並且使用 好 Lua 有幫助,同時其設計哲學和思想也能在某種程度上開闊我們的視野。
Codedump 《Lua 設計與實現》作者

譯者序
2016 年 2 月,時年 27 歲的我因春節期間暴飲暴食導致急性胰腺炎入院治療兩個餘月。 當真正別無選擇地終日躺在病床上時,就似乎不可避免地開始面對和嘗試回答那個亙古不變 的問題:“假設有一天我死了,究竟能夠留下什麼?” Lua 語言從 1993 年誕生至今已 20 餘年,是開源嵌入式腳本語言領域中一門獨樹一幟 的語言,在包括嵌入式、物聯網、遊戲、遊戲外掛、軟件安全、逆向工程等領域中均具有 不可替代的重要地位和極為廣泛的應用。截至 2017 年 7 月,Lua 語言在 IEEE Spectrum 編 程語言排行榜中名列第 21 位(http://spectrum.ieee.org/static/interactive-the-topprogramming-languages-2017),在 TIOBE 排行榜中名列第 27 位(The TIOBE Programming Community index,https://www.tiobe.com/tiobe-index)。近年來,除了遊戲領域典型的應 用外,包括 Redis、Nginx/OpenResty、NMAP、WOW、OpenWRT、PhotoShop 等大量的著名 產品也均使用 Lua 作為其嵌入式腳本引擎,以供開發者進行功能擴展和二次開發等。伴隨著 移動互聯網、DevOps 等的迅猛發展,Lua 語言在包括熱更新、不停機部署等的實現方面也提 供了一種現實的解決方案(例如銀行等金融應用中某些採用 C 語言編寫的性能密集型核心 交易邏輯)。在 Lua 語言多年的發展過程中,也有大量的第三方機構對 Lua 語言進行了多方 面的改進和增強,諸如 Lua JIT 等的發展也十分迅速。 除了語言本身的使用外,從語言的實現、原理、設計哲學等角度看,Lua 語言也是學習 編譯原理、虛擬機、腳本引擎等的重要參考和現實依據,可以成為相關領域教科書式的典範, 在國外也一直是部分高校計算機專業開展相關課程時的重要學習對象之一。在遊戲領域,深 入學習 Lua 語言後進行消化、吸收、優化、重構、增強甚至基於 Lua 語言的思想重新開發一 種腳本語言或一個腳本引擎的例子屢見不鮮;在軟件安全領域,基於虛擬機的思想設計出的 各類混淆、VM 保護產品更是有無數的先例;在各種灰色產業中,Lua 語言也同樣扮演了更 加鮮為人知的重要角色。 我在研究生期間學習嵌入式和遊戲逆向領域的過程中涉獵了 Lua 語言,之後由於在工作 中需要編寫 Nginx 和 Redis 的 Lua 腳本(Redis 的 Lua 腳本在原子性、執行效率等方面具有 顯著優勢)才開始對 Lua 語言進行深入的學習。然而,在學習 Lua 語言的過程中,我發現國內對 Lua 語言的應用仍主要集中在傳統的遊戲領域,市面上有限的幾本在售書籍也主要針對 Lua 語言在遊戲開發中的使用,並沒有一本書從語言本身的維度進行系統性介紹。目前網絡 上的各類中文資料、教程、手冊也大多是碎片化的,而且面向的還主要是 Lua 語言的陳舊版 本。對於有一定專業素養的從業人員而言,通常可以通過文檔或速成式的教程在數天或數周 內基本掌握一門語言,對於非計算機專業的開發人員或一般使用者則會難些。但我認為即便 只考慮專業從業者,也需要一本權威、系統且工具性的書籍對 Lua 語言進行全面的介紹,以 幫助實現低成本地快速學習和快速上手。此外,從事遊戲逆向等軟件安全領域的人士也有快 速建立對 Lua 語言認知甚至進行深入學習的必要。 2006 年左右,本書的英文第 2 版出版後,國內出版了其中文譯本,但至今已經超過 10 年,且本書的英文第 3 版也已經對全書的內容進行了重大重構,最新的 Lua 5.3 也發生了較 大的變化,因此之前的中文第 2 版和網絡上流傳的影印版 PDF 均已經不能滿足讀者現有的 需求。在這樣的情況下,加上機緣的巧合,我於 2016 年 11 月開始與電子工業出版社博文視 點的符隆美編輯一起聯繫了遠在巴西的 Lua 語言的作者,並最終從國內諸多出版商和譯者中 殺出重圍,艱難地爭取到了作者的翻譯版授權。 目前 Lua 語言在國內的發展不像 Python 語言、R 語言等為人熟知,也不似 Go 語言等站 在風口浪尖,但 Lua 語言在國外卻一直保持著持續性的演進,在過去 20 年間表現出了極為 強大的生命力(隨便舉一個嵌入式領域 OpenWrt 路由器操作系統的例子,目前在各大主流 路由器品牌或 KOS/小博無線等商業 WIFI 服務商中均扮演著不可替代的重要作用)。我相信, 儘管略顯小眾,譯文中也難免有值得商榷之處,這樣一本針對 Lua 語言最新版本的權威、系 統性的中文譯本都應該能夠為遊戲、嵌入式、物聯網、逆向工程、軟件安全、移動互聯網、 C 語言核心系統開發工程師等諸多領域的學生、愛好者和從業人員提供些許幫助――而這也 是我作為一名計算機行業從業人員的願望。 在開始本書的翻譯工作前,我自詡具有尚可的文字感知和表達能力,在多年的學習和工 作中也閱讀過計算機行業多個不同領域的大量中英文文檔,力圖以“信、達、雅”的原則要 求自己,從一名計算機行業一線從業者的角度,在盡可能正確地理解了原著英文意思後,用 盡可能專業的語言進行表述,避免出現讀者“感覺還不如直接去看英本原版”的情況。但是, 2017 年 4 月 20 日我拿到本書的部分原稿並開始著手翻譯後,我發現在“信、達、雅”三者間 做好平衡著實不是一件易事。受精力和能力所限,我也並未在實際生產代碼中使用過原著中 講解的所有機制,所以譯文中也一定會有諸多不妥、失誤甚至錯誤,如果讀者有任何意見或 建議可以直接通過我的郵箱(mlkui@163.com)或 QQ 讀者交流群(QQ 群號:662640785) 聯繫我,我會虛心接受一切批評和指正。
最後,我要感謝我的父母、妻子及親人們多年來給予的無限關心、支持和陪伴,你們是 我今天幸福生活的締造者和組成者,也是我奮鬥的根本動力和首要原因。 感謝中國民生銀行、中國民生銀行總行信息科技部的領導和同事們,儘管他們中的一些 已經離開。中國民生銀行是我走上社會後的第一個工作單位,感謝他們自我 2012 年入行實 習以來在工作和生活上給予的無限支持、認可

目次

第 1 部分 語言基礎 1
1 Lua 語言入門 2
1.1 程序段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 一些詞法規範 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 全局變量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 類型和值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 nil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 獨立解釋器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 小插曲:八皇后問題 13
2.1 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 數值 17
3.1 數值常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 算術運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 關係運算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4 數學庫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.1 隨機數發生器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.2 取整函數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5 表示範圍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6 慣例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7 運算符優先級 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.8 兼容性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.9 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 字符串 30
4.1 字符串常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 長字符串/多行字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 強制類型轉換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4 字符串標準庫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5 Unicode 編碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 表 43
5.1 表索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 表構造器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 數組、列表和序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4 遍歷表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.5 安全訪問 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.6 表標準庫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.7 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6 函數 56
6.1 多返回值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.2 可變長參數函數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3 函數 table.unpack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 正確的尾調用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.5 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7 輸入輸出 68
7.1 簡單 I/O 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.2 完整 I/O 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3 其他文件操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.4 其他系統調用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.4.1 運行系統命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.5 練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8 補充

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區