字典入門

*此內容是使用 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 是我們在美國及其他國家地區的部分註冊與未註冊商標。