Skip to main content

動態集合 (Dynamic Collections)

Sui 框架基於動態欄位動態物件欄位概念,提供了多種集合類型。這些集合被設計為一種更安全、更易於理解的方式來儲存和管理動態欄位和物件。

共同概念

所有的集合類型都共享以下方法:

  • add - 向集合中新增欄位。
  • remove - 從集合中移除欄位。
  • borrow - 從集合中借用欄位。
  • borrow_mut - 從集合中借用對欄位的可變引用。
  • contains - 檢查集合中是否存在該欄位。
  • length - 返回集合中的欄位數量。
  • is_empty - 檢查長度是否為 0。

所有集合類型都支援 borrowborrow_mut 方法的索引語法(方括號 [])。

Bag

Bag 就像其名稱所暗示的,作為一個異構值 (heterogeneous values) 的「袋子」。它是一種簡單、非泛型的類型,可以儲存任何數據。Bag 追蹤欄位數量,如果不為空則無法被銷毀,因此不會有「孤兒欄位」。

ObjectBag

定義在 sui::object_bag 模組中。與 Bag 相同,但內部使用動態物件欄位,只能儲存物件作為值。

Table

Table 是一種有類型的動態集合,具有固定的鍵 (Key) 和值 (Value) 類型。定義在 sui::table 模組中。

ObjectTable

定義在 sui::object_table 模組中。與 Table 相同,但內部使用動態物件欄位,只能儲存物件作為值。

LinkedTable

定義在 sui::linked_table 模組中。與 Table 類似,但值是鏈接在一起的,允許按順序插入和移除。

總結

  • Bag: 可儲存任何類型數據的簡單集合。
  • ObjectBag: 只能儲存物件的集合。
  • Table: 具有固定鍵值類型的動態集合。
  • ObjectTable: 只能儲存物件的有類型集合。
  • LinkedTable: 具有鏈接功能且支援順序操作的 Table。