Clase de motor
MemoryStoreHashMapPages
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Muestras de código
Listando elementos en un Mapa Hash de 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("Configurando los datos de HashMap...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- Las claves de HashMap deben ser cadenas
local value = `{key}_valor_prueba`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Error al establecer la clave {key}: {result}`)
end
end
print("Finalizando la configuración de datos de HashMap.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Puramente con fines de registro, rastreamos en qué número de página estamos
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Obteniendo elementos en la página {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Avanza a las páginas si hay más páginas por leer
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Terminada la lectura de todas las páginas")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Comparando elementos recuperados con los elementos esperados...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Valor recuperado para la clave {key} no coincide: se esperaba {expectedValue}, recuperado {retrievedItems[key]}`)
end
end
print("¡Comparación completa!")
return numMatchingItems
end
-- Las claves añadidas al hashmap también se añaden a esta tabla expectedItems.
-- Más tarde, los elementos recuperados del hashmap se compararán con esta tabla de elementos esperados.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Obtener páginas puede dar error. En este caso, dejaremos que falle y detendremos la ejecución del programa,
-- pero puedes querer usar pcall para manejarlo de manera diferente.
print(`Obteniendo páginas de HashMap con ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- Si no hubo errores al establecer o recuperar elementos, todos los elementos deberían coincidir.
print(`Programa completo. {numMatchingItems}/{NUM_TEST_ITEMS} elementos recuperados coincidieron con los valores esperados.`)