字典入門

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

字典是將名稱或 與值關聯的表,而不是索引。

範例:

Luau 字典語法
local pet = {
Name = "Bobbie",
Type = "Dog",
}

當你需要標記值,而不僅僅是像數組那樣按順序列出它們時,請使用字典。在本教程中通過操作與玩家相關的值來練習使用字典。

字典語法

與數組類似,字典使用大括號 {} 來分配給變量。鍵值對 以逗號分隔的單獨行存儲。鍵和值可以是任何數據類型,包括字符串、數字和變量名稱。

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

要將部分或其他實例對象作為鍵引用,請使用方括號。

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

創建字典

字典的一個日常用法是組織玩家或角色信息。這些步驟探討如何存儲和訪問理論上敵方角色的信息。

  1. 在新腳本中創建一個名為 enemy 的字典。

    local enemy = {
    }
  2. 字典中的第一個鍵將使用名為 Name 的變量來跟踪敵人的名稱。

    local enemy = {
    Name
    }
  3. 將敵人的名稱分配給該鍵,後面跟著一個逗號。

    local enemy = {
    Name = "Spike",
    }
  4. 添加第二個鍵值對以表示敵人應有的健康值。請記住,鍵應始終使用相同的數據類型,但值不必如此。

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

使用字典值

有兩種方法可以訪問字典值:

  • tableName["keyName"](重要的是,注意引號)
  • tableName.keyName
local enemy = {
Name = "Spike",
Health = 1000,
}
print("反派 " .. enemy["Name"] .. " 逼近!")
print("反派 " .. enemy.Name .. " 逼近!")

使用哪種風格通常取決於表的目的。對於持有值集合的表,例如伺服器中的玩家列表,編碼者通常會使用 tableName["keyName"]。對於用於描述對象的字典,編碼者更可能使用 tableName.keyName

更改字典值

更改鍵的值與任何其他變量相同;使用等號 = 操作符。

  1. enemy 表下,將敵人的名稱設置為其他名稱。

    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("敵人的名字是 " .. enemy.Name)
  2. 進行遊戲測試並檢查輸出窗口。

使用現有變量作為鍵

字典可以與在腳本其他部分聲明的現有變量互動。以下代碼示例使用變量在玩家加入遊戲時將其名稱作為鍵,然後將其點數值設置為 0。

  1. ServerScriptService 中創建一個名為 PlayerPoints 的新腳本。在腳本中,獲取 Players 服務並創建一個空字典,名為 playerPoints

    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. 編寫一個本地函數來設置玩家點數,並為新玩家變量設置一個參數。將該函數連接到 Players.PlayerAdded 事件。

    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. 在函數中,添加一個變量以獲取玩家的 Name,這是每個 Player 對象中的一個屬性,並添加一個打印語句以進行測試。

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("你好 " .. name)
    end
  4. name 插入 playerPoints 字典作為鍵,並將值,即玩家的點數,設置為 0。

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("你好 " .. name)
    playerPoints[name] = 0
    end
  5. 使用 name 打印玩家的名稱,並使用 playerPoints[name] 打印與該變量匹配的鍵的值。

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("你好 " .. name)
    playerPoints[name] = 0
    print(name .. " 擁有 " .. playerPoints[name] .. " 點數。")
    end
  6. 運行項目並觀察輸出。

完成的腳本
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("你好 " .. name)
playerPoints[name] = 0
print(name .. " 擁有 " .. playerPoints[name] .. " 點數。")
end
Players.PlayerAdded:Connect(setPoints)

可選挑戰

以下是一些挑戰,適用於以不同方式使用字典。看看你能否為這些編寫代碼。

  • 創建一個陷阱部件,對玩家造成隨時間損失的傷害。一旦玩家觸碰到陷阱,對他們造成傷害,等待,然後允許他們再次受到傷害。
  • 創建一個函數,通過訪問字典來檢查兩個玩家中哪一個擁有最多的點數。
  • 創建一個密碼系統,將一個字符串替換為另一個字符串以創建“秘密”代碼。例如,字母“A”可以替換為“G”,或者單詞“apple”可以替換為“orange”。

字典和 pairs()

pairs() 是一個經常用於遍歷 字典 的函數。下面是示例。

local myDictionary = {
["藍色玩家"] = "Ana",
["金色玩家"] = "Binh",
["紅色玩家"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " 是 " .. value)
end

pairs() 可以用來處理字典元素的鍵、值或兩者。在下面的 for 循環中,第一個變量是鍵。第二個變量是值。要處理的字典傳遞給 pairs()

local inventory = {
["金磚"] = 43,
胡蘿蔔 = 3,
火把 = 2,
}
print("你擁有:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

執行時,代碼將打印以下內容:

你擁有:
43 金磚
3 胡蘿蔔
2 火把

總結

字典是使用鍵值對而不是索引值的表。字典和數組的開始類似,都是將大括號分配給變量。保持條目用逗號分隔。

字典中的所有鍵應使用相同的數據類型,但值可以混合數據類型而不會有問題。

訪問字典的方式可以傳達其目的。敵人屬性的字典可能會使用點運算符訪問,而名稱列表則可能使用 tableName[keyName]

使用方括號時要小心;在表中創建的鍵名必須作為字符串處理:tableName["keyName"]。但是,當引用像部件這樣的對象時,不需要引號:tableName[keyName]

許多腳本需要遍歷字典或數組,但你可能不總是知道這些數據結構的開始和結束。例如,玩家的字典可能在變化,或者玩家可能有大小不一的數組庫存。

在這些情況下,你可以使用 pairs()ipairs()for 循環中遍歷每個元素,而無需知道開始和結束點。你也可以使用 in 關鍵字進行一般迭代,無需使用 pairs()ipairs()

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。