Classe de moteur
MemoryStoreHashMapPages
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Échantillons de code
Lister des éléments dans une carte de hachage MemoryStore
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("Configuration des données de la carte de hachage...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- Les clés de la carte de hachage doivent être des chaînes
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Erreur lors de la configuration de la clé {key}: {result}`)
end
end
print("Configuration des données de la carte de hachage terminée.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Purement à des fins de journalisation, nous suivons quel numéro de page nous sommes
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Récupération des éléments de la page {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Avancer les pages s'il y a plus de pages à lire
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Lecture de toutes les pages terminée")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Comparaison des éléments récupérés avec les éléments attendus...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Valeur récupérée non correspondante pour la clé {key}: attendu {expectedValue}, récupéré {retrievedItems[key]}`)
end
end
print("Comparaison terminée!")
return numMatchingItems
end
-- Les clés ajoutées à la carte de hachage sont également ajoutées à cette table expectedItems.
-- Plus tard, les éléments de la carte de hachage récupérés seront comparés à cette table d'éléments attendus.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- La récupération des pages peut échouer. Dans ce cas, nous laisserons cela échouer et arrêterons l'exécution du programme,
-- mais vous pouvez vouloir le pcall et le gérer différemment.
print(`Récupération des pages de la carte de hachage avec ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- S'il n'y a eu aucune erreur lors de la configuration ou de la récupération des éléments, tous les éléments devraient correspondre.
print(`Programme terminé. {numMatchingItems}/{NUM_TEST_ITEMS} éléments récupérés correspondent aux valeurs attendues.`)