John Belmonte |
|
Lua 使用者,wiki 簾幕背後的男人。(挑戰:快速唸出十次「lua 使用者」)
我透過成功的遊說影響了 Lua,以下是幾件事:
__tostring
(Lua 5.2)簡報 / 出版品
我的頁面(或至少是我開始的頁面)
我在 lua-l 上的貼文 [1]
最愛的 lua-使用者 wiki 頁面
lua-users.org 是...
我認為 Python PEP 的 [3] 是很好的資訊來源。找出 Python 有哪些缺陷,以及如何修正。了解 Python 如何實作最新的語言趨勢。
我想提一下一個奇妙的 wiki 實作屬性(大多數),這可能不是很明顯。它們會遺忘過去。儘管每個頁面都會維護編輯記錄,但它們會隨著時間推移而消失。因此,已刪除的錯誤、 unkind words 和無用的材料會真正消失,除非有人明確採取行動來復原或封存它們。這與寄件清單或新聞群組的概念完全不同,在公共論壇中,每個字元都可能被封存到文明結束。一篇與此主題相關的有趣文章是辯護 DELETE
金鑰 [4]。
以下是使用 unix wget
指令製作此 wiki 靜態複本以供離線瀏覽的方法。當然,離線時無法編輯或搜尋 wiki,所以這會讓事情變得沒那麼有趣。
wget --mirror --html-extension --convert-links https://lua-users.dev.org.tw/wiki/
table.pack
將包含僅限序列的表格。)
for i=1,getn(t)
」成語很冗長,如果不小心使用,需要針對每個項目執行全域表格查詢。foreachi
成語由於每個項目會產生額外的函數呼叫開銷而沒有效率,且因為需要定義一個函數物件而不簡潔。我已經實作一個新的 for
構造作為解決方案,請參閱 LuaPowerPatches。(在 Lua 5.1 中,成語已變更,但問題依然存在。我們現在使用「for i=1,#t
」或「for _,item in ipairs(t)
」。)這些問題很醜陋,但可以忍受
已被解決的歷史遺留問題
a = 5 globals().a = 5
lua_tostring
不遵守 __tostring
元表掛勾。C API 中的 lua_tostring
和基本 Lua 程式庫中的 tostring
並不相等。前者不遵守 __tostring
掛勾,這對於使用者定義類型的偵錯和錯誤輸出,以及一般使用使用者類型模擬字串而言很重要。舉個問題的範例,lua
命令列詮釋器在遇到未攔截到的例外狀況時,會使用 lua_tostring
,因此沒有辦法將非字串例外物件的明細傳達給使用者。(在 Lua 5.2 中,有一個獨立的函式 luaL_tolstring
,它會遵守 __tostring
,且詮釋器例外處理程式似乎會使用這個函式。)
string.format
%s 沒有呼叫 tostring
。(這在 Lua 5.2 中修正了。)
with
陳述式)展示此一功能的無盡使用方式。當然,只要 Lua 願意,就可以完成這些工作,但產生的程式碼難以遵循,容易出錯,且大量使用受保護的呼叫——限制協同例程的潛在用途。如果 Lua 提供一種方法來掛接到範圍離開事件,那就可以解決此一問題。請參閱 [Lua: 改善有決定性的資源清除]。(由 Lua 5.4 的「即將關閉」變數涵蓋。)