Lua程式設計(四十)

2021-09-10 03:16:01 字數 701 閱讀 6622

元表還允許我們指定關係運算子的含義,其中的元方法包括等於(__eq)、小於(__lt)、和小於等於(__le)。

lua語言的老版本中。lua語言會通過將a<=b轉換為**not (b < a)**來把所有的關係運算子轉化為乙個關係運算子。不過,這種轉化在遇到部分有序(partial order)時就會不正確。

所謂部分有序是指,並非所有型別的元素都能夠被正確地排序。例如,由於not a number存在,大多數計算機中的浮點數就不是完全可以排序的。根據ieee 754標準,nan代表為定義的值。標準規定任何涉及nan的比較都應返回假,這就意味著nan <= x永遠為假,x < nan也為假。因此,在這種情況下,a <= b到**not (b有了這些定以後,我們就可以比較集合了:

s1 = set.new

s2 = set.new

print(s1 <= s2)

print(s1 < s2)

print(s1 >= s1)

print(s1 > s1)

print(s1 == s2 * s1)

Lua程式設計(四十五)

我們的物件目前有了標識,狀態和對狀態進行的操作,但還缺乏類體系 繼承和私有性。大多數物件導向語言提供了類的概念,類在物件的建立中扮演了模子的作用。在這些語言中,每個物件都是某個特定類的例項 instance lua語言中沒有類的概念 雖然元表的概念在某種程度上與類的概念相似,但是把元表當做類使用在後...

Lua程式設計(四十二)

lua語言還提供了一種改變表在兩種正常情況下的行為的方式,即訪問和修改表中不能存在的字段。index 元方法 當訪問乙個表中不存在的字段時會得到nil。實際上,這些訪問會引發直譯器查詢乙個名為 index的元方法。如果沒有這個元方法,那麼像一般情況下一樣,結果就是nil 否則,則由這個元方法來提供最...

Lua程式設計(三)

通過昨天用lua程式語言解決八皇后問題,我對於lua語言的程式編寫有了大致的了解。今天開始了解lua的數值相關概念。在lua5.3中為數值格式提供了兩種選擇 一種為64位的integer型別,另一種則是雙精度的float型別。如果是資源受限的平台,如微控制器等我們可以使用精簡的32位數值格式。lua...