Giới thiệu về Dictionaries

*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.

Các từ điển là các bảng mà các tên hoặc "chìa khóa**" được liên kết với giá trị thay vì một chỉ mục.

Ví dụ:

Cú pháp Lua

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

Sử dụng từ điển khi bạn cần phải gắn nhãn giá trị, không chỉ 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 thiết lập các giá trị liên quan đến một người chơi.

Tổng quát ngữ cảnh

Giống như các dàn số, các từ điển được gán cho một biến với dấu chấm câu {} . Giá trị giới hạn Key được lưu trên các dòng riêng biệt theo dấu chấm câu. Các chìa khóa và giá trị có thể là bất kỳ đánh máydữ liệu nào, bao gồm cả các chuỗ


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

Để tham chiếu các bộ phận hoặc các đối tượng khác như các chì khóa, hãy sử dụng dấu chéo.


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 lần sử dụng hàng ngày của các từ điển là tổ chức thông tin người chơi hoặc nhân vật. Các bước này xem xét 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 tập script mới, tạo một từ điển tên là enemy .


    local enemy = {
    }
  2. Chìa khóa đầu tiên trong từ điển sẽ theo dõi tên kẻ thù bằng một biến đổi tên gọi là Name .


    local enemy = {
    Name
    }
  3. Đặt tên kẻ thù vào cái chì, theo dấu chấm chìa khóa.


    local enemy = {
    Name = "Spike",
    }
  4. Thêm một cặp giá trị chìa khóa thứ hai cho sức khỏe mà kẻ thù nên có. Hãy nhớ, các chìa khóa luôn luôn sử dụng cùng loại dữ đánh máy, nhưng giá trị không phải lúc nào cũng.


    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"] -- Ghi chú các dấu chấm câu tableName.keyName


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

Kiểu dùng thường được sử dụng phụ thuộc vào mục đích của bảng. Đối với các bảng chứa một loạt các giá trị như danh sách người chơi trong một máy chủ, các nhà lập trình thường sử dụng tableName ["keyName"] để mô tả một đối tượng. Đối với một từ điển được sử

Đổi giá trị của một từ điển

Đổi giá trị của một chìa khóa là giống như bất kỳ biến khác; sử dụng cùng một = oper作tor.

  1. Dưới cái enemy bàn, đặ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("The enemy's name is " .. enemy.Name)
  2. Thử nghiệm và kiểm tra cửa sổ Ra khỏi.

Biến tồn tại sẵn như Chìa khóa

Các từ điển có thể tương tác với các biến tồn tại trước đó được tuyên bố trong 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 người chơi làm chìa khóa khi họ tham gia trải nghiệm 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ụ Người chơi và tạo một câu định nghĩa trống có tên playerPoints .


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Lập một chức năng địa phương để cài đặt điểm của người chơi với một biến đổi người chơi mới. Kết nối chức năng với sự kiện Players.PlayerAdded .


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Trong chức năng, thêm một biến để nhận Name của người chơi, một tính năng trong mọi Player đối tượng, và một tuyên bố in để kiểm tra.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    end
  4. Đặt tên vào trường playerPoints dưới dạng chìa khóa, và đặt giá trị, điểm của người chơi, là 0.


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


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    print(name .. " has " .. playerPoints[name] .. " points.")
    end
  6. Chạy dự án và nhìn vào editor kết quả.

Kết thúc script

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)

Thử thách Ops

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

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

Các từ điển và cặp()

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 hiển thị bên dưới.


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

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


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

Khi thiết lập, mã sẽ in ra những gì theo dõi:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Tổng kết

Các từ điển là các bảng sử dụng cặp giá trị chìa khóa thay vì giá trị được lưu trữ. Từ điển và bảng dữ liệu bắt đầu tương tự nhau bằng cách gán dấu chấm câu vào một biến. Giữ các dòng dữ liệu được phân cách với dấu chấm câu.

Tất cả các chìa khóa trong một từ điển đều nên sử dụng cùng loại dữ đánh máy, nhưng giá trị có thể hỗn loạn dữ liệu mà không có vấn đề.

Kiểu dịch của cách mà một từ điển được truy cập có thể truyền tải mục đích của một từ điển. Một từ điển của tên thù địch có thể được truy cập bằng dấu chấm câu, trong khi một danh sách các tên có thể sử dụng tableName[keyName].

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

Nhiều script cần phải qua các từ điển hoặc bảng dữ liệu, nhưng bạn có thể không phải biết 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 của người chơi có thể đang thay đổi, hoặc người chơi có thể có một túi đồ dùng kích thước thay đổi.

Trong những trường hợp này, bạn có thể sử dụng pairs()ipairs() trong một vòng lặp for để qua mỗi thành phần mà không có điểm xuất phát và kết thúc biế