Antrian

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Antrian adalah struktur data linier dengan koleksi item. Ada dua jenis antrian di Roblox: antrian reguler, yang mengikuti prinsip first-in-first-out (FIFO), dan antrian prioritas, yang memiliki prioritas untuk item dalam antrian yang menentukan urutan akses data. Item dalam kedua jenis antrian dapat berupa tipe data Luau apa pun.

Antrian adalah struktur data bawaan dari layanan penyimpanan data non-persisten yang bernama MemoryStoreService, di mana Anda dapat langsung memanggil fungsi bawaan untuk mendapatkan antrian dan menambah, membaca, atau menghapus data dari antrian. Untuk penggunaan lainnya, seperti menjadwalkan tugas dan menangani permintaan dalam game Anda, Anda dapat menggunakan tabel untuk mengimplementasikan antrian sendiri.

Antrian reguler

Antrian reguler dipelihara dalam urutan FIFO, di mana semua item ditambahkan ke belakang antrian dan dibaca atau dihapus dalam urutan yang sama saat mereka ditambahkan, dari depan ke belakang.

Urutan bagaimana antrian reguler menambah, membaca, dan menghapus item

Antrian prioritas

Antrian prioritas tidak mengikuti aturan FIFO, di mana setiap item dapat ditambahkan dengan nomor prioritas yang menunjukkan urutannya saat dibaca atau dihapus. Item di belakang antrian prioritas memiliki prioritas default 0, dan item di depan antrian memiliki prioritas tertinggi yang ditetapkan, yaitu 5 dalam contoh berikut.

Prioritas yang ditetapkan untuk item mengubah urutan dalam mana antrian membaca item

Untuk contoh ini, sebuah item dengan prioritas yang ditetapkan 3 sedang ditambahkan ke antrian. Antrian menempatkan item baru di belakang semua item yang ada dengan prioritas yang ditetapkan 3 atau lebih. Untuk menempatkan item di depan antrian, Anda perlu menetapkan prioritas lebih tinggi daripada prioritas tertinggi yang ada saat ini. Dalam contoh ini, Anda perlu menetapkan prioritas ke 6 atau lebih tinggi.

Antrian prioritas berguna untuk situasi di mana Anda ingin membaca atau mengakses data berdasarkan urutan kepentingan daripada urutan penambahan. Anda dapat menetapkan prioritas sebagai integer saat menambahkan item, dan antrian memproses item dengan prioritas lebih tinggi sebelum item dengan prioritas lebih rendah. Misalnya, Anda dapat menggunakan antrian prioritas untuk pencocokan dengan memberikan prioritas lebih tinggi kepada pengguna yang telah menunggu lama.

Mengimplementasikan antrian

Anda dapat menggunakan antrian bawaan dari MemoryStoreService atau menggunakan tabel untuk mengimplementasikan antrian untuk semua penggunaan lainnya. Contoh kode berikut menunjukkan implementasi antrian reguler. Untuk menggunakan implementasi ini untuk game Anda, Anda harus menyimpannya sebagai ModuleScript dan menyimpannya di ReplicatedStorage, sehingga antrian Anda dapat diakses baik oleh klien maupun server.

Mengimplementasikan Antrian Reguler Menggunakan Tabel

--!strict
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
-- Periksa apakah antrian kosong
function Queue.isEmpty<T>(self: Queue<T>)
return self._first > self._last
end
-- Tambahkan nilai ke antrian
function Queue.enqueue<T>(self: Queue<T>, value: T)
local last = self._last + 1
self._last = last
self._queue[last] = value
end
-- Hapus nilai dari antrian
function Queue.dequeue<T>(self: Queue<T>): T
if self:isEmpty() then
error("Tidak dapat mengeluarkan dari antrian kosong")
end
local first = self._first
local value = self._queue[first]
self._queue[first] = nil
self._first = first + 1
return value
end
return Queue

Contoh kode berikut adalah contoh penggunaan sebagai Script di bawah Workspace. Anda dapat memodifikasi kode, tipe, dan lokasi penyimpanan untuk memenuhi penggunaan Anda sendiri, selama Anda menyimpan kode implementasi sebelumnya dengan benar.

Contoh Penggunaan Antrian Reguler

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Queue = require(ReplicatedStorage:WaitForChild("Queue"))
local myQueue = Queue.new()
-- Tambahkan beberapa nilai ke antrian
myQueue:enqueue(5)
myQueue:enqueue(10)
myQueue:enqueue(15)
-- myQueue = { 5, 10, 15 }
-- Hapus satu nilai dari antrian
local first = myQueue:dequeue()
print("Nilai pertama yang ditambahkan ke antrian adalah", first)
-- myQueue = { 10, 15 }
-- Tambahkan lebih banyak nilai ke antrian
myQueue:enqueue(20)
myQueue:enqueue(25)
myQueue:enqueue(30)
-- myQueue = { 10, 15, 20, 25, 30 }
-- Hapus nilai lain dari antrian
local second = myQueue:dequeue()
print("Nilai kedua yang ditambahkan ke antrian adalah", second)
-- myQueue = { 15, 20, 25, 30 }
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.