參考資料 › 函式參考 › Functions

Functions.collections.cleanArray

公用

呼叫方式

Functions.collections.cleanArray(array, except, invert)

將它記錄為名為 Functions.collections.cleanArray 的相依項目(接受自動完成即可完成此步驟),然後以該名稱呼叫。

作用

原地移除項目,預設只保留 except 值中列出的鍵。invert 為 true 時,移除列出的鍵並保留未列出的鍵。沒有例外清單時,預設會移除所有項目,而 invert 為 true 時會保留所有項目。輸入為 nil 時不執行任何操作。

參數

名稱類型作用
arraytable | nil要修改的表格;為 nil 時不執行任何操作。
excepttable | nil選擇性的鍵值集合,用於選擇項目;其自身的鍵會被忽略。
invertboolean | nil為 true 時移除列出的項目;為 false 或 nil 時只保留列出的項目。

傳回值

1...沒有傳回值。所提供的表格會被原地修改。

版本

內建輔助函式在每個版本上都會註冊。不同的是它們讀取的遊戲 API;某個 API 不存在時,輔助函式會改用備用方式,或傳回 nil 並附上原因。

它不會直接讀取任何遊戲 API。

範例

local seen = { Moonfire = true, Sunfire = true, Rake = true }
-- invert: remove the listed keys, keep the rest
Functions.collections.cleanArray(seen, { "Rake" }, true)
return seen.Rake == nil and seen.Moonfire == true

原始碼

Functions/collections.lua,第 109 行。在遊戲中為唯讀;「複製」會產生一份可編輯的複本。

Functions.collections.cleanArray(array, except, invert)
    if array == nil then
        return
    end
    if invert == nil then
        invert = false
    end

    for k,_ in pairs(array) do
        local skip = invert
        if except ~= nil then
            for _,v2 in pairs(except) do
                if (k == v2) then
                    skip = not invert
                    break
                end
            end
        end
        if not skip then
            array[k] = nil
        end
    end

返回函式參考