레퍼런스 › 함수 레퍼런스 › Functions

Functions.collections.spairs

공개

호출 방법

Functions.collections.spairs(t, order)

Functions.collections.spairs(이)라는 이름의 의존성으로 기록한 뒤(자동 완성을 수락하면 이렇게 됩니다) 그 이름으로 호출하세요.

하는 일

테이블 키의 정렬된 스냅샷을 순회하는 반복자를 만듭니다. 기본 정렬은 키를 비교하며, 사용자 정렬 콜백은 원래 테이블과 두 키를 받습니다. 값은 각 키를 내놓을 때 원래 테이블에서 읽습니다. 이전 방식의 반복자는 다음으로 캡처된 키가 nil이나 false이면 끝납니다.

인수

이름유형하는 일
ttable순회할 테이블. 사용자 정렬이 없으면 키끼리 비교할 수 있어야 합니다.
orderfunction | nilorder(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

함수 레퍼런스(으)로 돌아가기