Motor Sınıfı
MemoryStoreHashMapPages
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Özet
Kod Örnekleri
Bir MemoryStore Hash Map'teki öğeleri listeleme
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("HashMap verileri ayarlanıyor...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- HashMap anahtarları string olmalıdır
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Anahtar {key} ayarlamada hata: {result}`)
end
end
print("HashMap verilerinin ayarlanması tamamlandı.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Sadece günlüğe kaydetme amacıyla, hangi sayfa numarasını okuduğumuzu takip ediyoruz
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Sayfa {currentPageNumber} üzerindeki öğeleri alıyor...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Daha fazla sayfa varsa sayfaları ilerlet
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Tüm sayfaların okuma işlemi tamamlandı")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Alınan öğeleri beklenen öğelerle karşılaştırıyor...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Anahtar {key} için alınan değer uyuşmuyor: beklenen {expectedValue}, alınan {retrievedItems[key]}`)
end
end
print("Karşılaştırma tamamlandı!")
return numMatchingItems
end
-- HashMap'e eklenen anahtarlar bu expectedItems tablosuna da eklenir.
-- Daha sonra, alınan hashmap öğeleri bu beklenen öğeler tablosuyla karşılaştırılacaktır.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Sayfaları almak hata verebilir. Bu durumda, hata vermesine izin verecek ve programın çalışmasını durduracağız,
-- ama isterseniz pcall ile deneyip farklı şekilde işleyebilirsiniz.
print(`HashMap sayfaları ListItemsAsync ile alınıyor...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- Öğeleri ayarlama veya alma işlemlerinde hata yoksa, tüm öğeler eşleşmelidir.
print(`Program tamamlandı. {numMatchingItems}/{NUM_TEST_ITEMS} alınan öğe beklenen değerlerle eşleşti.`)