모듈:표 도구/문서
Module| 이 Lua 모듈은 시스템메시지에 사용되며 약 5,610,000페이지(전체 페이지의 약 10%)에 사용됩니다. 이를 변경하면 Wikipedia 사용자 인터페이스가 즉시 변경될 수 있습니다. 중대한 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.토크 페이지에서 변경 사항을 논의한 후 구현하십시오. |
| 이 모듈은 다음 다른 모듈에 의존합니다. |
이 모듈에는 Lua 테이블을 처리하기 위한 여러 기능이 포함되어 있습니다.이것은 메타 모듈로 다른 Lua 모듈에서 호출하는 것을 의미하며 #invoke에서 직접 호출해서는 안 됩니다.
모듈 로드
기능을 사용하려면 먼저 모듈을 로드해야 합니다.
현지의 표 도구 = 요구하다('모듈:테이블 도구') isPositiveInteger
표 도구.isPositiveInteger(가치) 돌아온다true한다면value양의 정수입니다.false아니라면.테이블에서는 동작하지 않지만 특정 테이블 키가 테이블의 배열 부분에 있는지 해시 부분에 있는지 판별하는 데 유용하기 때문에 여기에 포함되어 있습니다.
Nan
표 도구.Nan(가치) 돌아온다true한다면valueNaN 값입니다.false아니라면.테이블에서는 동작하지 않지만 값이 유효한 테이블 키가 될 수 있는지 여부를 판단하는 데 유용하기 때문에 여기에 포함되어 있습니다(NaN 값이 테이블 키로 사용될 경우 Lua는 오류를 생성합니다).
얕은 클론
표 도구.얕은 클론(t) 테이블의 클론을 반환합니다.반환되는 값은 새 테이블이지만 모든 하위 테이블과 함수가 공유됩니다.메타메트호드는 존중받지만 반환된 테이블에는 메타메트 가능한 테이블이 없습니다.공유 서브테이블이 없고 메타테이블이 전송된 새 테이블을 만들려면mw.clone대신.공유 서브테이블이 없고 메타테이블이 전송되지 않은 새 테이블을 만들려면deepCopy와 함께noMetatable선택.
중복 제거
표 도구.중복 제거(t) 배열에서 중복된 값을 제거합니다.이 함수는 표준 배열에서만 동작하도록 설계되어 있습니다.정의 정수가 아닌 키는 첫 번째 이후의 모든 값과 마찬가지로 무시됩니다.nilvalue. (이하의 어레이의 경우)nil사용할 수 있는 값compressSparseArray먼저)을 클릭합니다.이 함수는 배열 순서를 유지하려고 합니다.최초의 고유하지 않은 값이 유지되고 이후의 모든 중복 값이 삭제됩니다.예를 들어 테이블의 경우{5, 4, 4, 3, 4, 2, 2, 1} removeDuplicates돌아온다{5, 4, 3, 2, 1}.
숫자 키
표 도구.숫자 키(t) 테이블을 차지하다t그리고 숫자 순서로 정렬된 값이 아닌 양의 정수 키의 숫자를 포함하는 배열을 반환합니다.예를 들어 테이블의 경우{'foo', nil, 'bar', 'baz', a = 'b'},numKeys돌아온다{1, 3, 4}.
접사 번호
표 도구.접사 번호(t, 접두사, 접미사) 테이블을 차지하다t옵션 프리픽스를 가진 키 수를 포함하는 배열을 반환합니다.prefix및 옵션의 서픽스suffix예를 들어 테이블의 경우{a1 = 'foo', a3 = 'bar', a6 = 'baz'}및 프리픽스'a',affixNums돌아온다{1, 3, 6}. 의 모든 문자prefix그리고.suffix문자 그대로 해석됩니다.
numData
표 도구.numData(t, 압축하다.) 테이블에는 다음과 같은 키가 있습니다."foo1","bar1","foo2",그리고."baz2"는 다음 형식의 서브테이블 테이블을 반환합니다.{ [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }. 정수로 끝나지 않는 키는 다음과 같은 이름의 하위 테이블에 저장됩니다."other"compress 옵션을 사용하면 테이블이 압축되어 다음 명령을 사용하여 반복할 수 있습니다.ipairs.
compressSparseArray
표 도구.compressSparseArray(t) 어레이를 사용t1개 이상의 0 값을 사용하여 순서를 유지하면서 0 값을 삭제함으로써 어레이를 안전하게 통과할 수 있도록 합니다.ipairs. 양의 정수가 아닌 키는 모두 삭제됩니다.예를 들어 테이블의 경우{1, nil, foo = 'bar', 3, 2},compressSparseArray돌아온다{1, 3, 2}.
스파스아이페어
표 도구.스파스아이페어(t) 이것은 스파스 어레이를 통과하기 위한 반복 함수입니다.t와 비슷합니다.ipairs단, 가장 높은 숫자 키까지 반복됩니다.ipairs첫 번째가 지나면 멈출지도 모른다nilvalue. 양의 정수가 아닌 키는 무시됩니다.
보통sparseIpairs범용으로 사용됩니다.for고리.
위해서 i, v 에 표 도구.스파스아이페어(t) 일을 하다 -- 코드 블록 끝. 주의:sparseIpairs를 사용합니다.pairs기능을 합니다.일부 테이블 키는 무시되는 것처럼 보이지만 실행 시 모든 테이블 키에 액세스합니다.
크기
표 도구.크기(t) 키/값 쌍 테이블의 크기를 찾습니다.예를 들어 테이블의 경우{foo = 'foo', bar = 'bar'},size돌아온다2이 기능은 어레이에서도 사용할 수 있지만 어레이의 경우,#교환입니다.테이블 크기를 검색하려면 이 함수는pairs모든 테이블 키를 반복하는 기능을 수행합니다.
Keys To List(키 투 리스트)
표 도구.Keys To List(키 투 리스트)(t, 키 정렬, 확인했다) 기본 비교 함수 또는 사용자 정의를 사용하여 정렬된 테이블의 키 목록을 반환합니다.keySortfunction(기능) : function function 、 function function function ascomp공급되는 기능table.sort.한다면keySort이false, 정렬은 이루어지지 않습니다.세트checked로.true내부 유형 확인을 건너뜁니다.
정렬 페어
표 도구.정렬 페어(t, 키 정렬) 키를 정렬하여 테이블을 반복합니다.keysToList기능.숫자 키만 있으면sparseIpairs아마 더 효율적일 겁니다.
어레이
표 도구.어레이(가치) 돌아온다true한다면value는 테이블이며 모든 키는 1부터 시작하는 연속된 정수입니다.
어레이라이크
표 도구.어레이라이크(가치) 돌아온다true한다면value는 반복 가능하며 모든 키는 1부터 시작하는 연속된 정수입니다.
뒤집다
표 도구.뒤집다(arr) 배열의 키와 값을 바꿉니다.예를들면,invert{ "a", "b", "c" }수율{ a=1, b=2, c=3 }.
list To Set(목록 설정)
표 도구.list To Set(목록 설정)(arr) 테이블의 배열 부분에서 세트를 작성합니다.arr. 어레이 값 중 하나로 세트를 인덱싱하면 반환됩니다.true.예를들면,listToSet{ "a", "b", "c" }수율{ a=true, b=true, c=true }. "모듈"도 참조해 주세요.Lua는 세트를 만드는 고급 방법을 설정했습니다.
딥 카피
표 도구.딥 카피(발생하다, 측정할 수 없다, 이미 본) 테이블의 복사본을 만듭니다.orig와 마찬가지로mw.clone함수가 아닌 값은 모두 복제되며 테이블의 ID는 유지됩니다.한다면noMetatable이truemetable(있는 경우)은 복사되지 않습니다.로딩된 테이블을 복사할 수 있습니다.mw.loadData.
와 유사하다mw.clone,그렇지만mw.clone로딩된 테이블을 복사할 수 없습니다.mw.loadData메타테이블을 복사할 수 없습니다.
스파스 콩캣
표 도구.스파스 콩캣(t, 세프, i, j) 정의 정수로 색인화된 테이블 내의 모든 값을 순서대로 연결합니다.예를들면,sparseConcat{ "a", nil, "c", "d" }수율"acd"그리고.sparseConcat{ nil, "b", "c", "d" }수율"bcd".
길이
표 도구.길이(t, 접두사) 배열의 길이 또는 선택 사항인 키가 있는 준 배열의 길이를 찾습니다.prefix예를 들어 "data1", "data2" 등입니다.지수 검색 알고리즘을 사용하여 길이를 구하므로 테이블 검색을 최대한 적게 사용할 수 있습니다.
이 알고리즘은 메타테이블(frame.args 등)을 사용하는 배열 및 준 배열에 유용합니다.일반 어레이의 경우 # 연산자를 사용합니다.이 연산자는 C에 구현되어 있어 더 빠릅니다.
어레이 내
표 도구.어레이 내(arr, value To Find(값 검색)) 돌아온다true한다면valueToFind어레이의 멤버입니다.arr,그리고.false그렇지않으면.