Dictionaries adalah tabel yang menghubungkan nama atau “*kunci**” dengan nilai bukan indeks.
Contoh:
Syntax Kamus Lua
local pet = {Name = "Bobbie",Type = "Dog",}
Gunakan kamus saat Anda perlu menyebutkan nilai, bukan hanya menyebutkan mereka dalam urutan seperti yang dilakukan matriks dalam tutorial ini dengan menipu nilai yang terkait dengan pemain.
Syntax Kamus
Seperti array,典典 ditetapkan ke variabel dengan kurungan curly {}. Ke value pair tersimpan di baris tertpisah setelah koma. Key dan nilai dapat menyimpan semua ketikdata, termasuk string, angka, dan nama variabel.
local playerNames = {player1 = "Zap",player2 = "Kel",}print(playerNames["player1"])
Untuk mengacu pada bagian atau objek lain sebagai kunci, gunakan tanda kurung.
local greenPart = workspace.GreenPartlocal redPart = workspace.RedPartlocal partList = {[greenPart] = true,[redPart] = false,}print(partList[redPart])
Membuat Kamus
Satu penggunaan harian dari典典 menghubungkan informasi pengguna atau karakter. Langkah-langkah ini mengeksplorasi cara informasi karakter musuh teoritis dapat disimpan dan diakses.
Dalam naskah baru, buat kamus bernama enemy .
local enemy = {}Kunci pertama dalam kamus akan melacak nama musuh dengan variabel bernama Name .
local enemy = {Name}Berikan nama musuh ke unit, diikuti oleh koma.
local enemy = {Name = "Spike",}Tambahkan pasangan nilai kunci kedua untuk berapa banyak kesehatan yang harus dimiliki musuh. Ingat, kunci harus selalu menggunakan ketikdata yang sama, tetapi nilai tidak harus.
local enemy = {Name = "Spike",Health = 1000,}
MenggunakanNilai Kamus
Ada dua cara untuk mengakses nilai典藏: tableName["keyName"] -- Catat kutipan tableName.keyName
local enemy = {Name = "Spike",Health = 1000,}print("The villain " .. enemy["Name"] .. " approaches!")print("The villain " .. enemy.Name .. " approaches!")
Gaya mana yang akan digunakan biasanya tergantung pada tujuan tabel. Untuk tabel yang menyimpan koleksi nilai seperti daftar pemain di server, kode rata-rata akan menggunakan tableName ["keyName"). Untuk dicakup典典, kode kemungkinan akan menggunakan tableName.keyName.
MengubahNilai Kamus
Mengubah nilai kunci sama dengan unitlain; gunakan operator yang sama =.
Di bawah tabel enemy, atur nama musuh menjadi sesuatu yang lain.
local enemy = {Name = "Spike",Health = 1000,}enemy.Name = "Rana"print("The enemy's name is " .. enemy.Name)Mainkan dan periksa jendela Keluaran.
変수 Prasetel sebagai Kunci
Diksi dapat berinteraksi dengan variabel pra-eksi yang telah diumumkan di bagian lain dari script. Contoh kode berikut menggunakan variabel untuk menambahkan nama pemain sebagai kunci saat mereka bergabung dengan pengalaman dan kemudian menetapkan nilai poin mereka ke 0.
Di ServerScriptService , buat script baru bernama PlayerPoints. Dalam script, dapatkan layanan Pemain dan buat daftar kosong bernama playerPoints .
local Players = game:GetService("Players")local playerPoints = {}Kode fungsi lokal untuk menetapkan poin pemain dengan parameter untuk variabel pemain baru. Hubungkan fungsi ke acara Players.PlayerAdded.
local playerPoints = {}local function setPoints(newPlayer)endPlayers.PlayerAdded:Connect(setPoints)Dalam fungsi, tambahkan variabel untuk mendapatkan Name , property di setiap Player objek, dan statement cetak untuk pengujian.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)endSisipkan nama ke dalam playerPoints典典 sebagai unit, dan tetapkan nilai, poin pemain, ke 0.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0endGunakan name untuk menghasilkan nama pemain dan playerPoints[name] untuk menghasilkan nilai kunci yang cocok dengan variabel.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0print(name .. " has " .. playerPoints[name] .. " points.")endJalankan proyek dan lihat ke editor keluaran.
Skrip selesai
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hello " .. name)
playerPoints[name] = 0
print(name .. " has " .. playerPoints[name] .. " points.")
end
Players.PlayerAdded:Connect(setPoints)
Tantangan Opsional
Di bawah ini adalah beberapa tantangan yang berlaku untuk menggunakan典典 di berbagai cara. Lihat apakah Anda dapat membangun kode untuk ini.
- Buat bagian perangkap yang merusak dari waktu ke waktu pada pemain. Setelah pemain menyentuh perangkap, kerusakkan mereka, tunggu, lalu izinkan mereka untuk rusak lagi.
- Buat fungsi yang memeriksa dua pemain mana yang memiliki lebih banyak poin dengan mengakses dictionary.
- Buat cipher, sistem bertukar satu kata untuk kata lain untuk membuat kode "rahasia", misalnya, bagaimana huruf "A" dapat ditukar dengan "G", atau bagaimana kata apel dapat ditukar dengan kata oranye.
Diksi dan pasangan()
pairs() adalah fungsi yang sering digunakan untuk beriterasi melalui 典典 . Contohnya dapat dilihat di bawah ini.
local myDictionary = {["Blue Player"] = "Ana",["Gold Player"] = "Binh",["Red Player"] = "Cate",}for key, value in pairs(myDictionary) doprint(key .. " is " .. value)end
pairs() dapat digunakan untuk bekerja dengan unit, nilai, atau keduanya dari elemen dicakup kamus. Dalam for loop di bawah ini, variabel pertama adalah unit. Variabel kedua adalah nilai. Diksi yang ingin Anda kerjakan diberikan kepada pairs() .
local inventory = {["Gold Bricks"] = 43,Carrots = 3,Torches = 2,}print("You have:")for itemName, itemValue in pairs(inventory) doprint(itemValue, itemName)end
Setelah dijalankan, kode akan mencetak mengikuti:
You have:43 Gold Bricks3 Carrots2 Torches
Sintesis
Diksi adalah tabel yang menggunakan pasangan nilai kunci alih-alih nilai yang ditunjuk. Diksi dan array dimulai dengan cara yang sama dengan menetapkan kurungan berdikung ke variabel. Simpan entri dengan koma.
Semua kunci dalam kamus harus menggunakan ketikdata yang sama, tetapi nilai dapat mencampur jenis data tanpa masalah.
Gaya bagaimana典型 diakses dapat menyampaikan tujuan dari典型. Sebuah典型 dari properti musuh akan mungkin diakses dengan operator dot, sementara daftar nama akan mungkin menggunakan tableName[keyName].
Saat menggunakan bracket, perhatikan; nama kunci yang dibuat di dalam tabel harus diperlakukan sebagai string: tableName["keyName"] . Namun, ketika mengacu pada objek seperti bagian, quotation tidak diperlukan: tableName[keyName] .
Banyak script perlu menggunakan典典 atau array, tetapi Anda mungkin tidak selalu tahu awal dan akhir dari struktur data ini. Misalnya, definisi pemain mungkin berubah, atau pemain mungkin memiliki inventaris array dari ukuran berbeda.
Dalam situasi ini, Anda dapat menggunakan pairs() dan ipairs() dalam satu for loop untuk pergi melalui setiap elemen tanpa titik awal dan akhir. Anda juga dapat menggunakan kata umum melalui 2>in2> kata kunci untuk melingkar melalui ele