Engine-Klasse
MemoryStoreHashMapPages
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Code-Beispiele
Listen von Elementen in einer MemoryStore-Hashmap
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("HashMap-Daten setzen...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- HashMap-Schlüssel müssen Strings sein
local value = `{key}_test_wert`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Fehler beim Setzen des Schlüssels {key}: {result}`)
end
end
print("Fertig mit dem Setzen der HashMap-Daten.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Rein für Protokollierungszwecke verfolgen wir, auf welcher Seitenzahl wir sind
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Hole Elemente auf Seite {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Seiten wechseln, wenn es weitere Seiten zu lesen gibt
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Fertig mit dem Lesen aller Seiten")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Vergleiche abgerufene Elemente mit erwarteten Elementen...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Nicht übereinstimmender abgerufener Wert für Schlüssel {key}: erwartet {expectedValue}, abgerufen {retrievedItems[key]}`)
end
end
print("Vergleich abgeschlossen!")
return numMatchingItems
end
-- Schlüssel, die zum Hashmap hinzugefügt werden, werden auch zu dieser expectedItems-Tabelle hinzugefügt.
-- Später werden die abgerufenen Hashmap-Elemente mit dieser Tabelle der erwarteten Elemente verglichen.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Seitenabrufe können fehlschlagen. In diesem Fall lassen wir es fehlschlagen und stoppen die Programmausführung,
-- aber Sie möchten es möglicherweise pcallen und anders damit umgehen.
print(`Hole HashMap-Seiten mit ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- Wenn beim Setzen oder Abrufen von Elementen keine Fehler aufgetreten sind, sollten alle Elemente übereinstimmen.
print(`Programm abgeschlossen. {numMatchingItems}/{NUM_TEST_ITEMS} abgerufene Elemente stimmten mit den erwarteten Werten überein.`)