Справочник › Справочник функций › Functions

Functions.collections.spairs

общедоступный

Как вызывать

Functions.collections.spairs(t, order)

Запишите его как зависимость с именем Functions.collections.spairs (принятие автодополнения делает это само) и вызывайте по этому имени.

Что делает

Создать итератор по отсортированному снимку ключей таблицы. По умолчанию сравниваются ключи; пользовательский обратный вызов порядка получает исходную таблицу и два ключа. Значения читаются из исходной таблицы в момент выдачи каждого ключа. Старый итератор заканчивается, когда следующий захваченный ключ равен nil или false.

Аргументы

ИмяТипЧто делает
ttableОбходимая таблица; без пользовательского порядка ключи должны быть взаимно сравнимы.
orderfunction | nilНеобязательный обратный вызов порядка, вызываемый как order(t, leftKey, rightKey).

Возвращает

1functionИтератор, выдающий захваченный ключ и его текущее значение в таблице, или ничего, когда ключи закончились.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

Не читает игровой API напрямую.

Пример

local stacks = { Frost = 2, Arcane = 1, Fire = 3 }
local byCount = function(t, a, b) return t[a] > t[b] end
for school in Functions.collections.spairs(stacks, byCount) do
    return school == "Fire"
end
return false

Исходный код

Functions/collections.lua, строка 38. В игре только для чтения; «Дублировать» создаёт редактируемую копию.

Functions.collections.spairs(t, order)
    -- collect the keys
    local keys = {}
    for k in pairs(t) do keys[#keys+1] = k end

    -- if order function given, sort by it by passing the table and keys a, b,
    -- otherwise just sort the keys
    if order then
        table.sort(keys, function(a,b) return order(t, a, b) end)
    else
        table.sort(keys)
    end

    -- return the iterator function
    local i = 0
    return function()
        i = i + 1
        if keys[i] then
            return keys[i], t[keys[i]]
        end
    end

Назад: Справочник функций