第十一章 Caché 多維數組

第十一章 Caché 多維數組

Caché包括對多維數組的支持。多維數組是由一個或多個元素組成的持久變量,每個元素都有唯一的下標。可以混合使用不同種類的下標。下面是MyVar數組的示例:

MyVar
MyVar(22)
MyVar(-3)
MyVar(“MyString”)
MyVar(-123409, “MyString”)
MyVar(“MyString”, 2398)
MyVar(1.2, 3, 4, “Five”, “Six”, 7)

數組節點MyVar是ObjectScript變量,並遵循該變量類型的約定。

MyVar的下標是正數和負數、字符串及其組合。下標可以包括任何字符,包括Unicode字符。數字下標作爲規範數字存儲和引用。字符串下標作爲區分大小寫的文字存儲和引用。規範數(或減少爲規範數的數)和包含該規範數的字符串是等價的下標。

什麼是多維數組

簡而言之,多維數組是通過使用下標表示的永久性n維數組。單個節點也稱爲“globals”,是 Caché數據存儲的構建塊。它們還有其他特點:

  • 它們以樹狀結構存在。
  • 它們稀疏數組。
  • 它們可以在多個設置中顯示。

多維樹形結構

多維數組的整個結構稱爲樹;它從頂部開始,向下增長。根,上面的MyVar,在頂部。根及其任何其他下標形式稱爲節點。下面沒有節點的節點稱爲葉。下面有節點的節點稱爲父代或祖先。具有父節點的節點稱爲子節點或子節點。父母相同的孩子被稱爲兄弟姐妹。所有同級在添加到樹中時都會自動按數字或字母順序排序。

稀疏多維存儲

多維數組是稀疏的。這意味着上面的示例僅使用七個保留的內存位置,每個定義的節點一個。此外,由於不需要聲明數組或指定它們的維度,因此還有額外的內存優勢:沒有提前爲它們保留空間;它們在需要之前不使用空間;它們使用的所有空間都是動態分配的。舉個例子,一個用於跟蹤棋局中棋子的數組;一個棋盤是8x8的。在需要8x8棋盤大小的數組的語言中,即使跳棋佔用的位置不超過24個,也將使用64個內存位置;在ObjectScript中,數組僅在開始時需要24個位置,並且在遊戲過程中需要的位置越來越少。

多維數組的設置

多維數組可以以三種不同的設置顯示:

  • 可以使用任何全局,從而將其轉換爲數組。在這種情況下,創建全局^y(1)時,全局^y將成爲數組^y中的一個節點。
  • 可以使用任何屬性,從而將其轉換爲數組。
  • 可以使用任何局部變量,從而將其轉換爲數組。在本例中,當創建變量x(1)時,變量x將成爲數組x中的一個節點。

操作多維數組

可以分別使用READWRITE命令對它們進行寫入和讀取。

Caché提供了一套全面的命令和函數來處理多維數組:

  • SET將值放入數組中。
  • KILL刪除全部或部分數組結構。
  • Merge將數組結構的全部或部分複製到第二個數組結構。
  • $ORDER$QUERY允許迭代數組的內容。
  • $DATA允許測試數組中是否存在節點。
    這組命令和函數可以對多維全局變量和多維局部變量進行操作。Globals 可以很容易地通過它們的前導“^”(插入符號)字符來識別。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章