960 次瀏覽
眾所周知,Lua 遵循的模式匹配設計與通常基於 POSIX 的正則表示式設計有很大不同。它們之間幾乎沒有共同點,在兩者中,POSIX 方法更受歡迎,因為它在示例變得更復雜時效果很好,並且可以處理各種情況,但這並不意味著 Lua 的模式匹配不好。事實上,它更容易理解,並且執行良好。Lua 字串庫沒有使用正則表示式,而是有一套特殊的…… 閱讀更多
281 次瀏覽
在本文中,我們將學習如何在 Lua 程式設計中宣告和編寫不同的詞法約定。在 Lua 中,我們將 NAMES 稱為識別符號,它們可以是字母、數字和下劃線的任意字串,並且不能以數字開頭。讓我們考慮一個 Lua 中不同識別符號的示例,並檢視哪些是有效的,哪些不是。示例請考慮以下所示示例 - 即時演示i = 10 print(i) j1 = 11 print(j1) _ij = 99 print(_ij) aVeryLongName = "Tutorials point" print(aVeryLongName)在上述示例中,所有變數(識別符號)都是有效的,因為它們要麼以字母開頭,要麼以數字、…… 閱讀更多
4K+ 次瀏覽
Lua 中沒有 continue 語句,這並不是因為 Lua 程式語言的開發者認為它沒有用,事實上,在官方文件中他們提到“continue 只是眾多可能的新的控制流機制之一”。這清楚地表明,Lua 程式語言的開發者並不是“continue”語句的忠實粉絲。如果我們需要分解為什麼 Lua 開發人員不希望使用“continue”語句的事實,那麼它可以歸結為兩個可能的答案,它們是 - 他們認為“continue”語句只是另一種…… 閱讀更多
2K+ 次瀏覽
是的,Lua 中的陣列以索引 1 作為第一個索引,而不是像您在大多數程式語言中看到的那樣以索引 0 作為第一個索引。示例請考慮以下所示示例 - 即時演示arr = {10, 11, 12, 13, 14} print(arr[0]) print(arr[1])在上述示例中,我們正在列印索引 0 和 1 處的值,並且預設情況下,索引 0 處的值將為 nil,因為在 Lua 中,陣列從 1 開始索引,而不是 0。輸出nil 10所以,現在我們知道陣列是基於 1 索引的,而不是基於 0 索引的。但是,等等,為什麼是 1 索引和 0 索引?實際上,曾經有…… 閱讀更多
10K+ 次瀏覽
在 Lua 中,當我們想使用 for 迴圈遍歷給定表時,我們會同時使用 pairs() 和 ipairs() 函式。這兩個函式都返回鍵值對,其中鍵是元素的索引,值是儲存在該索引表中的元素。雖然它們都有一些相似之處,但瞭解它們也有一些非常明顯的區別也很重要,我們應該意識到這一點。pairs() 和 ipairs() 函式之間的第一個區別是 pairs() 函式不維護鍵的順序,而 ipairs() 函式肯定會維護。示例請考慮…… 閱讀更多
1K+ 次瀏覽
Lua 中的 ~= 符號或運算子稱為不等於運算子。在許多程式語言中,您可能已經看到了 != 符號,它也稱為不等於運算子。讓我們考慮幾個可以使用不等於運算子的示例。示例請考慮以下所示示例 - 即時演示a = 2 b = 3 print(a ~= b)輸出true示例即時演示t1 = {4,2,3} t2 = {2,3,4} print(t1 ~= t2)輸出true
568 次瀏覽
一元運算子 # 在 Lua 中稱為長度運算子。它幾乎在 Lua 中隨處可見。在任何地方,我的意思是,在任何我們需要計算任何字串長度的地方,也可以在表中使用它,但是當涉及到表時,通常不建議使用 # 運算子,因為它不會計算表中存在的元素數量。讓我們探索長度運算子的不同示例,以瞭解如何使用它。示例請考慮以下所示示例 - 即時演示print(#"abcdefg") print(#{"a", "b", "c", 77})輸出7 4在…… 閱讀更多
256 次瀏覽
雖然我們知道 Lua 在我們想將其用作嵌入式語言時可以很好地工作,但它也可以超出其基本用途,並可用於極端情況,例如機器學習和統計分析。對於這種從 Lua 中獲得更多收益的特定情況,市場上存在許多科學庫。讓我們探討一下這些庫是什麼以及它們的功能。當在同一個句子中談論 Lua 和機器學習時,我想到的第一個名字是 Torch 專案。Torch 專案是一個科學計算…… 閱讀更多
985 次瀏覽
在 Lua 中,任何函式都是閉包。從更狹義的角度來說,閉包是匿名函式,就像您示例中返回的函式一樣。閉包是一等公民:它們可以分配給變數、傳遞給函式並從函式中返回。它們既可以是 Lua 表中的鍵,也可以是值。與 C++ 或 PHP 不同,Lua 中的閉包可以訪問本地作用域中的所有變數——upvalue,無需顯式宣告 upvalue。當代碼執行離開設定它們的塊時,Upvalue 會保留。現在我們知道了什麼是閉包以及它為什麼有用,讓我們舉個例子並…… 閱讀更多
每當我們嘗試訪問 Lua 表中未宣告的欄位時,我們得到的答案都是 nil。雖然這是事實,但原因是當發生此類訪問時,直譯器會觸發對 __index 元方法的搜尋,如果它找不到任何名為 __index 的方法,那麼我們將得到 nil 作為答案;否則我們將獲得 __index 元方法中設定的欄位值的任何內容。我們可以顯式地將 __index 方法放入表中,併為其提供我們希望它返回的命名值…… 閱讀更多