Lớp công cụ
MemoryStoreHashMapPages
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Tóm Tắt
Mẫu mã
Liệt kê các mục trong Bản đồ Băm 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("Đang thiết lập dữ liệu Bản đồ Băm...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- Các khóa Bản đồ Băm phải là chuỗi
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Lỗi khi thiết lập khóa {key}: {result}`)
end
end
print("Đã hoàn thành việc thiết lập dữ liệu Bản đồ Băm.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Chỉ để mục đích ghi nhật ký, chúng tôi theo dõi số trang mà chúng tôi đang ở
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Đang lấy các mục trên trang {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Tiến tới trang tiếp theo nếu còn trang để đọc
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Đã hoàn thành việc đọc tất cả các trang")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Đang so sánh các mục đã lấy với các mục mong đợi...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Giá trị đã lấy không khớp cho khóa {key}: mong đợi {expectedValue}, đã lấy {retrievedItems[key]}`)
end
end
print("Hoàn thành so sánh!")
return numMatchingItems
end
-- Các khóa được thêm vào bản đồ băm cũng được thêm vào bảng expectedItems này.
-- Sau đó, các mục bản đồ băm đã lấy sẽ được so sánh với bảng các mục mong đợi này.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Việc lấy các trang có thể gặp lỗi. Trong trường hợp này, chúng tôi sẽ để nó gặp lỗi và dừng thực thi chương trình,
-- nhưng bạn có thể muốn pcall nó và xử lý theo cách khác.
print(`Đang lấy các trang Bản đồ Băm với ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- Nếu không có lỗi khi thiết lập hoặc lấy các mục, tất cả các mục nên khớp.
print(`Chương trình hoàn thành. {numMatchingItems}/{NUM_TEST_ITEMS} mục đã lấy khớp với các giá trị mong đợi.`)