Klasa silnika
MemoryStoreHashMap
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Podsumowanie
Metody
RemoveAsync(key: string):() |
UpdateAsync(key: string,transformFunction: function,expiration: number):Variant |
Materiały referencyjne dotyczące interfejsów API
Metody
GetAsync
Parametry
Zwroty
Variant
Przykłady kodu
Uzyskiwanie danych z pamięci podręcznej Hash Map
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("Zapisano pomyślnie!")
end
local item
local getSuccess, getError = pcall(function()
item = hashMap:GetAsync(key)
end)
if getSuccess then
print(item)
else
warn(getError)
endListItemsAsync
Parametry
Zwroty
Przykłady kodu
Wyświetlanie elementów w mapie skrótów 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("Ustawianie danych HashMap...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- Klucze HashMap muszą być stringami
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Błąd ustawiania klucza {key}: {result}`)
end
end
print("Zakończono ustawianie danych HashMap.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Czysto w celach logowania, śledzimy, na którym numerze strony jesteśmy
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Pobieranie elementów na stronie {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Przechodzimy do następnej strony, jeśli są kolejne strony do przeczytania
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Zakończono czytanie wszystkich stron")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Porównywanie pobranych elementów z oczekiwanymi elementami...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Niezgodna wartość pobrana dla klucza {key}: oczekiwano {expectedValue}, pobrano {retrievedItems[key]}`)
end
end
print("Porównanie zakończone!")
return numMatchingItems
end
-- Klucze dodane do hashmapy są także dodawane do tej tabeli expectedItems.
-- Później, pobrane elementy hashmapy będą porównywane z tą tabelą oczekiwanych elementów.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Pobieranie stron może kończyć się błędem. W takim przypadku pozwolimy na błąd i zatrzymamy wykonanie programu,
-- ale możesz chciałbyś użyć pcall i obsłużyć to inaczej.
print(`Pobieranie stron HashMap z ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- Jeśli nie było błędów przy ustawianiu lub pobieraniu elementów, wszystkie elementy powinny pasować.
print(`Program zakończony. {numMatchingItems}/{NUM_TEST_ITEMS} pobranych elementów pasowało do oczekiwanych wartości.`)RemoveAsync
Parametry
Zwroty
()
Przykłady kodu
Usuwanie danych z Mapy Hash 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("Usunięcie powiodło się!")
else
warn(removeError)
endSetAsync
Zwroty
Przykłady kodu
Dodawanie danych do pamięci Hash Map
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("Ustawienie zakończone sukcesem!")
else
warn(setError)
endUpdateAsync
Zwroty
Variant
Przykłady kodu
Aktualizacja pamięci przechowującej mapę haszy
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
-- zapewnij, że nie przekroczymy maksymalnej liczby zasobów
if resource.count > 500 then
resource.count = 500
end
return resource
end, 1200)
end)
if success then
print(newResourceCount)
end
end
contributeResources("myResource", 50)