Pengantar ke dictionary

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

Kamus adalah tabel yang menghubungkan nama atau kunci dengan nilai bukan indeks.

Misalnya:

Sintaks kamus Luau

local pet = {
Name = "Bobbie",
Type = "Dog",
}

Gunakan kamus saat Anda perlu menandai nilai, bukan hanya mencantumkann mereka dalam urutan seperti yang dilakukan oleh arrayBerlatihlah menggunakan kamus dalam tutorial ini dengan memanipulasi nilai yang terkait dengan pemain.

Sintaks Kamus

Seperti array, kamus ditugaskan ke variabel dengan kurungan gulungan {}. Pasangan nilai kunci disimpan pada baris terpisah diikuti oleh koma.Kunci dan nilai dapat menjadi semua jenis data, termasuk string, angka, dan nama variabel.


local playerNames = {
player1 = "Zap",
player2 = "Kel",
}
print(playerNames["player1"])

Untuk merujuk bagian atau objek instan lainnya sebagai kunci, gunakan kurung.


local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

Buat glosarium

Salah satu penggunaan sehari-hari dari kamus adalah mengatur informasi pemain atau karakter.Langkah-langkah ini menjelaskan bagaimana informasi karakter musuh teoritis dapat disimpan dan diakses.

  1. Dalam skrip baru, buat kamus dengan nama enemy.


    local enemy = {
    }
  2. Kunci pertama dalam kamus akan melacak nama musuh dengan variabel yang disebut Name.


    local enemy = {
    Name
    }
  3. Atribusikan nama musuh ke kunci, diikuti oleh koma.


    local enemy = {
    Name = "Spike",
    }
  4. Tambahkan pas kunci-nilai kedua untuk berapa banyak kesehatan yang seharusnya dimiliki musuh. Ingat, kunci harus selalu menggunakan jenis data yang sama, tetapi nilai tidak harus.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

Gunakan nilai-nilai kamus

Ada dua cara untuk mengakses nilai kamus:

  • tableName["keyName"] (penting, perhatikan kutipan)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("The villain " .. enemy["Name"] .. " approaches!")
print("The villain " .. enemy.Name .. " approaches!")

Gaya mana yang harus digunakan biasanya tergantung pada tujuan tabel.Untuk tabel yang menyimpan koleksi nilai seperti daftar pemain di server, pemrogram biasanya akan menggunakan tableName["keyName"] .Untuk kamus yang digunakan untuk menggambarkan objek, pengkode lebih mungkin menggunakan tableName.keyName .

Ubah nilai kamus

Mengubah nilai kunci sama dengan variabel lain; gunakan operator sama = .

  1. Di bawah tabel enemy, atur nama musuh menjadi sesuatu hal lain.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("The enemy's name is " .. enemy.Name)
  2. Tes ulang dan periksa jendela Output.

Variabel pra-eksisting sebagai kunci

Kamus dapat berinteraksi dengan variabel prasetel yang dideklarasikan di bagian lain dari skrip.Contoh kode berikut menggunakan variabel untuk menambahkan nama pemain sebagai kunci saat mereka bergabung dengan pengalaman dan kemudian menetapkan nilai poin mereka menjadi 0.

  1. Di dalam ServerScriptService , buat skrip baru dengan nama PlayerPoints.Di dalam skrip, dapatkan Layanan Pemain dan buat kamus kosong bernama playerPoints .


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. 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)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Dalam fungsi, tambahkan variabel untuk mendapatkan Name pemain, properti di setiap objek Pemain , dan pernyataan cetak untuk pengujian.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    end
  4. Masukkan name ke dalam kamus playerPoints sebagai kunci, dan atur nilainya, poin pemain, menjadi 0.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    end
  5. Gunakan name untuk mencetak nama pemain dan playerPoints[name] untuk mencetak nilai kunci yang cocok dengan variabel


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    print(name .. " has " .. playerPoints[name] .. " points.")
    end
  6. Jalankan proyek dan perhatikan outputnya.

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 kamus dengan cara yang berbeda. Lihat apakah Anda dapat membuat kode untuk ini.

  • Buat bagian perangkap yang melakukan kerusakan dari waktu ke waktu pada pemain. Setelah seorang pemain menyentuh perangkap, hancurkan mereka, tunggu, lalu izinkan mereka terluka lagi.
  • Buat fungsi yang memeriksa mana dari dua pemain yang memiliki poin paling banyak dengan mengakses kamus.
  • Buat kode cipher, sistem pertukaran satu string untuk yang lain untuk membuat kode "rahasia".Sebagai contoh, huruf "A" dapat dipertukarkan dengan "G," atau kata "apel" dapat dipertukarkan dengan "oranye."

Kamus dan pasangan ()

pairs() adalah fungsi yang sering digunakan untuk mengulang melalui kamus . Sebuah contoh dapat dilihat di bawah ini.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " is " .. value)
end

pairs() dapat digunakan untuk bekerja dengan kunci, nilai, atau keduanya elemen kamus.Dalam loop for di bawah ini, variabel pertama adalah kunci.Variabel kedua adalah nilainya.Kamus yang ingin Anda gunakan dikirim ke pairs() .


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Saat dieksekusi, kode akan mencetak yang berikut:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Singkatan

Kamus adalah tabel yang menggunakan pasangan kunci-nilai alih-alih nilai indeks.Kamus dan array dimulai dengan cara yang sama dengan menugaskan kurungan bergelombang ke variabel.Jaga agar entri terpisah dengan koma.

Semua kunci dalam kamus harus menggunakan jenis data yang sama, tetapi nilai dapat mencampur jenis data tanpa masalah.

Cara di mana kamus diakses dapat mengungkapkan tujuannya.Kamus properti musuh kemungkinan akan diakses dengan operator dot, sementara daftar nama kemungkinan akan menggunakan tableName[keyName].

Saat menggunakan kurungan, berhati-hatilah; nama kunci yang dibuat dalam tabel harus diperlakukan sebagai string: tableName["keyName"].Namun, saat merujuk pada objek seperti bagian, kutipan tidak diperlukan: tableName[keyName] .

Banyak skrip perlu melalui kamus atau array, tetapi Anda mungkin tidak selalu tahu awal dan akhir dari struktur data iniSebagai contoh, kamus pemain mungkin berubah, atau pemain mungkin memiliki inventaris array berukuran berbeda.

Dalam situasi ini, Anda dapat menggunakan pairs() dan ipairs() dalam loop for untuk melalui setiap elemen tanpa titik awal dan akhir yang dikenalAnda juga dapat menggunakan iterasi umum melalui kata kunci in untuk melingkar melalui elemen tanpa perlu pairs() atau ipairs() .