Classe de moteur
MemoryStoreHashMap
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Résumé
Méthodes
RemoveAsync(key: string):() |
UpdateAsync(key: string,transformFunction: function,expiration: number):Variant |
Référence API
Méthodes
GetAsync
Paramètres
Retours
Variant
Échantillons de code
Obtenir des données d'une carte de hachage MemoryStore
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local key = "User_1234"
local value = 1000
local expiration = 30
local setSuccess, _ = pcall(function()
return hashMap:SetAsync(key, value, expiration)
end)
if setSuccess then
print("La définition a réussi !")
end
local item
local getSuccess, getError = pcall(function()
item = hashMap:GetAsync(key)
end)
if getSuccess then
print(item)
else
warn(getError)
endListItemsAsync
Paramètres
Retours
É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 du HashMap...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- Les clés du HashMap doivent être des chaînes
local value = `{key}_valeur_test`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Erreur lors de la définition de la clé {key}: {result}`)
end
end
print("Terminé la configuration des données du HashMap.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Purement à des fins de journalisation, nous suivons le numéro de page actuel
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Obtention 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 au hashmap sont également ajoutées à cette table expectedItems.
-- Plus tard, les éléments du hashmap 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 l'erreur se produire et arrêterons l'exécution du programme,
-- mais vous pouvez vouloir l'encapsuler dans un pcall et le gérer différemment.
print(`Récupération des pages du HashMap avec ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- S'il n'y avait aucune erreur lors de la définition ou de la récupération des éléments, tous les éléments devraient correspondre.
print(`Programme terminée. {numMatchingItems}/{NUM_TEST_ITEMS} éléments récupérés correspondent aux valeurs attendues.`)RemoveAsync
Paramètres
Retours
()
Échantillons de code
Suppression de données d'une carte de hachage MemoryStore
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local key = "User_1234"
local value = 1000
local expiration = 30
local setSuccess, setError = pcall(function()
return hashMap:SetAsync(key, value, expiration)
end)
if not setSuccess then
warn(setError)
end
local removeSuccess, removeError = pcall(function()
hashMap:RemoveAsync(key)
end)
if removeSuccess then
print("Suppression réussie!")
else
warn(removeError)
endSetAsync
Retours
Échantillons de code
Ajouter des données à une carte de hachage MemoryStore
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local key = "User_1234"
local value = 1000
local expiration = 30
local setSuccess, setError = pcall(function()
return hashMap:SetAsync(key, value, expiration)
end)
if setSuccess then
print("Mise réussie !")
else
warn(setError)
endUpdateAsync
Retours
Variant
Échantillons de code
Mise à jour d'une carte de hachage Memory Store
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("ResourceInventory")
local function contributeResources(itemResource, addedCount)
local success, newResourceCount = pcall(function()
return hashMap:UpdateAsync(itemResource, function(resource)
resource = resource or { count = 0 }
resource.count = resource.count + addedCount
-- assurez-vous de ne pas dépasser le nombre maximum de ressources
if resource.count > 500 then
resource.count = 500
end
return resource
end, 1200)
end)
if success then
print(newResourceCount)
end
end
contributeResources("myResource", 50)