호출 방법
Functions.collections.spairs(t, order)
Functions.collections.spairs(이)라는 이름의 의존성으로 기록한 뒤(자동 완성을 수락하면 이렇게 됩니다) 그 이름으로 호출하세요.
하는 일
테이블 키의 정렬된 스냅샷을 순회하는 반복자를 만듭니다. 기본 정렬은 키를 비교하며, 사용자 정렬 콜백은 원래 테이블과 두 키를 받습니다. 값은 각 키를 내놓을 때 원래 테이블에서 읽습니다. 이전 방식의 반복자는 다음으로 캡처된 키가 nil이나 false이면 끝납니다.
인수
| 이름 | 유형 | 하는 일 |
|---|---|---|
t | table | 순회할 테이블. 사용자 정렬이 없으면 키끼리 비교할 수 있어야 합니다. |
order | function | nil | order(t, leftKey, rightKey) 형태로 호출되는 선택적 정렬 콜백. |
반환값
| 1 | function | 캡처된 키와 현재 테이블 값을 내놓는 반복자. 끝나면 아무 값도 내놓지 않습니다. |
|---|
버전
기본 제공 도우미는 모든 버전에 등록됩니다. 다른 점은 읽는 게임 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