คิวเป็นโครงสร้างข้อมูลลิнейาร์ที่มีคอลเลกชันของรายการ มีสองประเภทของคิวใน 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 }