大多數語言都提供了一些方法,可以使用等價關係和散列函數(使用散列表)或使用順序關係(使用樹)來有效地爲任何類型的鍵實現映射。如何使用Lua中自己的唯一鍵實現映射?
但是,似乎Lua表只提供這個字符串。具體而言,如果使用Lua表(概念上實現「對象」)作爲關鍵字,則只能通過引用同一個對象再次查找,而不是具有相同「內容」的新對象。
這是需要實現類似於數據庫索引或基於「唯一」鍵的某個值的緩存的行爲,至少不採用線性時間查找。
我唯一能想到的是,如果關鍵對象是由字段f1,...,fn
組成的,我們可以製作一堆嵌套地圖並像這樣查找T[f1][f2]...[fn]
(至少如果字段本身是整數或字符串) 。這有點可怕,打破了將「f1,...,fn
」封裝成「對象」的意圖。
還有其他想法嗎?
您是否嘗試過重寫表上的__index'元方法?它允許你處理索引自己的使用方式。然後,您可以檢查關鍵表格的內容而不是其參考。請參閱http://www.lua.org/pil/13.4.1.html – SolarBear