Giới thiệu về từ điển

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Từ điển là các bảng liên kết tên hoặc khóa với một giá trị thay vì một chỉ số.

Ví dụ:

Cú pháp từ điển Luau
local pet = {
Name = "Bobbie",
Type = "Chó",
}

Sử dụng từ điển khi bạn cần gán nhãn cho các giá trị, không chỉ đơn thuần là liệt kê chúng theo thứ tự như một mảng. Thực hành sử dụng từ điển trong hướng dẫn này bằng cách thao tác với các giá trị liên kết với một người chơi.

Cú pháp từ điển

Giống như các mảng, từ điển được gán cho một biến với dấu ngoặc nhọn {}. Cặp khóa-giá trị được lưu trên các dòng riêng biệt theo sau bởi một dấu phẩy. Các khóa và giá trị có thể là bất kỳ kiểu dữ liệu nào, bao gồm chuỗi, số và tên biến.

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

Để tham chiếu các phần hoặc các đối tượng đã được khởi tạo khác như là khóa, sử dụng dấu ngoặc.

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

Tạo một từ điển

Một ứng dụng hàng ngày của từ điển là tổ chức thông tin của người chơi hoặc nhân vật. Các bước sau đây khám phá cách thông tin của một nhân vật kẻ thù lý thuyết có thể được lưu trữ và truy cập.

  1. Trong một script mới, tạo một từ điển có tên là enemy.

    local enemy = {
    }
  2. Khóa đầu tiên trong từ điển sẽ theo dõi tên của kẻ thù với một biến có tên là Name.

    local enemy = {
    Name
    }
  3. Gán một tên kẻ thù cho khóa, theo sau bởi một dấu phẩy.

    local enemy = {
    Name = "Spike",
    }
  4. Thêm một cặp khóa-giá trị thứ hai cho số lượng máu mà kẻ thù nên có. Hãy nhớ rằng, các khóa luôn nên sử dụng cùng một kiểu dữ liệu, nhưng các giá trị thì không cần.

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

Sử dụng giá trị từ điển

Có hai cách để truy cập giá trị từ điển:

  • tableName["keyName"] (quan trọng, lưu ý các dấu ngoặc kép)
  • tableName.keyName
local enemy = {
Name = "Spike",
Health = 1000,
}
print("Kẻ phản diện " .. enemy["Name"] .. " đang tiến đến!")
print("Kẻ phản diện " .. enemy.Name .. " đang tiến đến!")

Phong cách nào để sử dụng thường phụ thuộc vào mục đích của bảng. Đối với các bảng chứa một tập hợp các giá trị như danh sách người chơi trong một máy chủ, các lập trình viên thường sẽ sử dụng tableName["keyName"]. Đối với một từ điển được sử dụng để mô tả một đối tượng, các lập trình viên có nhiều khả năng sử dụng tableName.keyName.

Thay đổi giá trị từ điển

Thay đổi giá trị của một khóa giống như bất kỳ biến nào khác; sử dụng toán tử bằng =.

  1. Dưới bảng enemy, đặt tên của kẻ thù thành một cái gì đó khác.

    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("Tên của kẻ thù là " .. enemy.Name)
  2. Chơi thử và kiểm tra cửa sổ Output.

Các biến đã tồn tại như khóa

Từ điển có thể tương tác với các biến đã tồn tại được khai báo ở các phần khác của một script. Ví dụ mã sau đây sử dụng một biến để thêm tên của người chơi như một khóa khi họ tham gia trò chơi và sau đó đặt giá trị điểm của họ thành 0.

  1. Trong ServerScriptService, tạo một script mới có tên PlayerPoints. Trong script, lấy dịch vụ Players và tạo một từ điển rỗng có tên là playerPoints.

    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Lập trình một hàm cục bộ để thiết lập điểm cho người chơi với một tham số cho một biến người chơi mới. Kết nối hàm với sự kiện Players.PlayerAdded.

    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Trong hàm, thêm một biến để lấy Name của người chơi, một thuộc tính trong mỗi đối tượng Player, và một câu lệnh in để kiểm tra.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("xin chào " .. name)
    end
  4. Chèn name vào từ điển playerPoints như một khóa, và đặt giá trị, điểm của người chơi, thành 0.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("xin chào " .. name)
    playerPoints[name] = 0
    end
  5. Sử dụng name để in tên của người chơi và playerPoints[name] để in giá trị của khóa tương ứng với biến.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("xin chào " .. name)
    playerPoints[name] = 0
    print(name .. " có " .. playerPoints[name] .. " điểm.")
    end
  6. Chạy dự án và quan sát đầu ra.

Script hoàn thành
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("xin chào " .. name)
playerPoints[name] = 0
print(name .. " có " .. playerPoints[name] .. " điểm.")
end
Players.PlayerAdded:Connect(setPoints)

Thử thách tùy chọn

Dưới đây là một số thử thách áp dụng cho việc sử dụng từ điển theo nhiều cách khác nhau. Xem bạn có thể xây dựng mã cho những điều này không.

  • Tạo một phần bẫy gây sát thương theo thời gian cho một người chơi. Khi một người chơi chạm vào bẫy, gây sát thương cho họ, chờ, sau đó cho phép họ bị sát thương lần nữa.
  • Tạo một hàm kiểm tra ai trong hai người chơi có nhiều điểm hơn bằng cách truy cập một từ điển.
  • Tạo một mã hóa, một hệ thống hoán đổi một chuỗi cho một chuỗi khác để tạo ra một mã "bí mật". Ví dụ, chữ cái "A" có thể được hoán đổi với "G," hoặc từ "apple" có thể được hoán đổi với "orange."

Từ điển và pairs()

pairs() là một hàm thường được sử dụng để lặp qua các từ điển. Một ví dụ được thấy dưới đây.

local myDictionary = {
["Người chơi xanh"] = "Ana",
["Người chơi vàng"] = "Binh",
["Người chơi đỏ"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " là " .. value)
end

pairs() có thể được sử dụng để làm việc với khóa, giá trị hoặc cả hai của một phần tử từ điển. Trong vòng lặp for dưới đây, biến đầu tiên là khóa. Biến thứ hai là giá trị. Từ điển mà bạn muốn làm việc được truyền vào pairs().

local inventory = {
["Gạch vàng"] = 43,
Cà rốt = 3,
Đuốc = 2,
}
print("Bạn có:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Khi được thực thi, mã sẽ in ra như sau:

Bạn có:
43 Gạch vàng
3 Cà rốt
2 Đuốc

Tóm tắt

Từ điển là các bảng sử dụng cặp khóa-giá trị thay vì các giá trị được chỉ mục. Từ điển và mảng bắt đầu tương tự bằng cách gán dấu ngoặc nhọn cho một biến. Giữ các mục được phân tách bằng dấu phẩy.

Tất cả các khóa trong một từ điển nên sử dụng cùng một kiểu dữ liệu, nhưng các giá trị có thể trộn lẫn các kiểu dữ liệu mà không gặp vấn đề gì.

Cách mà một từ điển được truy cập có thể truyền đạt mục đích của nó. Một từ điển về các thuộc tính của kẻ thù có thể sẽ được truy cập bằng toán tử chấm, trong khi một danh sách tên có thể sẽ sử dụng tableName[keyName].

Khi sử dụng dấu ngoặc, hãy cẩn thận; các tên khóa được tạo ra trong bảng phải được coi là chuỗi: tableName["keyName"]. Tuy nhiên, khi tham chiếu đến các đối tượng như các phần, các dấu ngoặc kép là không cần thiết: tableName[keyName].

Nhiều script cần phải lặp qua các từ điển hoặc mảng, nhưng bạn có thể không luôn biết điểm bắt đầu và kết thúc của các cấu trúc dữ liệu này. Ví dụ, một từ điển về người chơi có thể đang thay đổi, hoặc người chơi có thể có một mảng hàng tồn kho với kích thước khác nhau.

Trong những tình huống này, bạn có thể sử dụng pairs()ipairs() trong một vòng lặp for để đi qua từng phần tử mà không cần biết điểm bắt đầu và kết thúc. Bạn cũng có thể sử dụng lặp chung thông qua từ khóa in để lặp qua các phần tử mà không cần đến pairs() hoặc ipairs().

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.