คิว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คิวเป็นโครงสร้างข้อมูลลิнейาร์ที่มีคอลเลกชันของรายการ มีสองประเภทของคิวใน Roblox: คิวปกติ ซึ่งปฏิบัติตามหลักการของการเป็นคู่ก่อ

คิวเป็นโครงสร้างข้อมูลที่ออกแบบมาของ ไม่เก็บข้อมูลที่ยืนยาวนาน เป็นเจ้าของ

คิวทั่วไป

คิวปกติจะดำเนินการในลำดับ FIFO โดยมีรายการทั้งหมดถูกเพิ่มลงในด้านหลังของคิวและอ่านหรือลบในลำดับเดียวกันที่พวกเขาเพิ่มลงมาจากด้านหน้าไปด้านล่าง

ลำดับการเพิ่มรายการในคิวปกติ อ่าน และลบรายการ

คิวการเร่งความเร็ว

คิวการเรียกใช้ไม่ได้ปฏิบัติตามกฎ FIFO ซึ่งแต่ละรายการสามารถเพิ่มด้วยตัวเลขความสามารถที่ระบุว่ามันอยู่ในอาหรับหรือถูกลบออก รายการที่อยู่ที่ด้านหลังของคิวมีค

ไอเท็ม

สำหรับตัวอย่างนี้ รายการที่มีความสามารถในการกำหนดความสามารถของ 3 จะถูกเพิ่มไปยังคิว คิวจะวางรายการใหม่นี้ไว้ด้านหลังของรายการที่มีความสามารถในการกำหน

คิวความสามารถใช้ได้สำหรับสถานการณ์ที่คุณต้องการอ่านหรือเข้าถึงข้อมูลขึ้นอันดับโดยไม่ต้องสงสัยคำสั่งการเพิ่มเมื่อการเพิ่มรายการ คุณสามารถตั้งค่าควา

การใช้คิว

คุณสามารถใช้คิวที่เริ่มต้นของ MemoryStoreService หรือใช้ ตาราง เซิร์ฟเวอร์ๆ ตัวอย่า

การใช้ Table เพื่อให้คิวปกติ

--! ข้อควรระวัง
local Queue = {}
Queue.__index = Queue
export type Queue<T> = typeof(setmetatable(
{} :: {
_first: number,
_last: number,
_queue: { T },
},
Queue
))
function Queue.new<T>(): Queue<T>
local self = setmetatable({
_first = 0,
_last = -1,
_queue = {},
}, Queue)
return self
end
-- ตรวจสอบว่าคิวว่างหรือไม่
function Queue.IsEmpty<T>(self: Queue<T>)
return self._first > self._last
end
-- เพิ่มมูลค่าให้กับคิว
function Queue.Enqueue<T>(self: Queue<T>, value: T)
local last = self._last + 1
self._last = last
self._queue[last] = value
end
-- ลบสิ่งหนึ่งออกจากคิว
function Queue.Dequeue<T>(self: Queue<T>): T
if self:IsEmpty() then
error("Cannot dequeue from empty queue")
end
local first = self._first
local value = self._queue[first]
self._queue[first] = nil
self._first = first + 1
return value
end
return Queue

ตัวอย่างรหัสต่อไปนี้เป็นตัวอย่างการใช้งานเป็น Script ภายใต้ Workspace คุณสามารถปรับแก้รหัส ป้อน และตำแหน่งการเก็บข้อมูลเพื่อให้เหมาะกับการใช้งานของคุณเองได้ ตรา

ตัวอย่างการใช้คิวปกติ

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Queue = require(ReplicatedStorage:WaitForChild("Queue"))
local myQueue = Queue.new()
-- เพิ่มบางค่าให้กับคิว
myQueue:Enqueue(5)
myQueue:Enqueue(10)
myQueue:Enqueue(15)
-- myQueue = { 5, 10, 15}
-- ลบหนึ่งค่าออกจากคิว
local first = myQueue:Dequeue()
print("The first value added to the queue was", first)
-- myQueue = { 10, 15}
-- เพิ่มมาตรฐานให้กับคิว
myQueue:Enqueue(20)
myQueue:Enqueue(25)
myQueue:Enqueue(30)
-- myQueue = { 10, 15, 20, 25, 30}
-- ลบค่าอื่นออกจากคิว
local second = myQueue:Dequeue()
print("The second value added to the queue was", second)
-- myQueue = { 15, 20, 25, 30 }