一種特殊類型的 Pages 對象,其頁面包含來自 MemoryStoreHashMap 的鑰匙值對組。Pages:GetCurrentPage() 可用於取回一個集合的表,每個包含一個鑰匙和值;這些反映了鑰匙值對數據。
範例程式碼
以下代碼列出記憶體儲存堆疊地圖中的所有項目。
在記憶體儲存哈希地圖中列出項目
local MemoryStoreService = game:GetService("MemoryStoreService")
local testHashMap = MemoryStoreService:GetHashMap("HashMap1")
local EXPIRATION = 600
local NUM_TEST_ITEMS = 32
local function populateHashMap(hashMap: MemoryStoreHashMap, numItems: number): { [string]: any }
print("Setting HashMap data...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- 地圖鑰匙必須是字串
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Error setting key {key}: {result}`)
end
end
print("Done setting HashMap data.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- 純粹用於記錄目的,我們記錄我們在哪個頁面上
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Getting items on page {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(`\t{entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- 如果有更多要閱讀的頁面,請提前幾頁
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Finished reading all pages")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Comparing retrieved items to expected items...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Mismatched retrieved value for key {key}: expected {expectedValue}, retrieved {retrievedItems[key]}`)
end
end
print("Comparison complete!")
return numMatchingItems
end
-- 加入到哈希地圖的鑰匙也會添加到此預期的項目表中。
-- 之後,回收的哈希地圖項目將與預期的項目表進行比較。
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- 取得頁面可能發生錯誤。在這種情況下,我們會讓它發生錯誤並停止程序執行,
-- 但你可能想要呼叫它並以不同的方式處理它。
print(`Getting HashMap pages with ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- 如果沒有錯誤設置或取得項目,所有項目都應匹配。
print(`Program complete. {numMatchingItems}/{NUM_TEST_ITEMS} retrieved items matched the expected values.`)
概要
屬性
屬性 繼承自 Pages
方法
屬性 繼承自 Pages