元表還允許我們指定關係運算子的含義,其中的元方法包括等於(__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...