Kelas Engine
MemoryStoreHashMapPages
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Rangkuman
Contoh Kode
Mendaftar item dalam Peta Hash 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("Mengatur data HashMap...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- Kunci HashMap harus berupa string
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Kesalahan mengatur kunci {key}: {result}`)
end
end
print("Selesai mengatur data HashMap.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Murni untuk tujuan logging, kami melacak nomor halaman yang kami gunakan
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Mengambil item di halaman {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Maju ke halaman berikutnya jika masih ada halaman yang harus dibaca
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Selesai membaca semua halaman")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Membandingkan item yang diambil dengan item yang diharapkan...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Nilai yang diambil tidak cocok untuk kunci {key}: diharapkan {expectedValue}, diambil {retrievedItems[key]}`)
end
end
print("Perbandingan selesai!")
return numMatchingItems
end
-- Kunci yang ditambahkan ke hashmap juga ditambahkan ke tabel expectedItems ini.
-- Nanti, item hashmap yang diambil akan dibandingkan dengan tabel item yang diharapkan ini.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Mengambil halaman dapat menghasilkan kesalahan. Dalam hal ini, kami akan membiarkannya menghasilkan kesalahan dan menghentikan eksekusi program,
-- tetapi Anda mungkin ingin pcall dan menangani secara berbeda.
print(`Mengambil halaman HashMap dengan ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- Jika tidak ada kesalahan dalam mengatur atau mengambil item, semua item harus cocok.
print(`Program selesai. {numMatchingItems}/{NUM_TEST_ITEMS} item yang diambil cocok dengan nilai yang diharapkan.`)