Lua에서 ipair와pair의 차이
pairs (t)If t has a metamethod __pairs, calls it with t as argument and returns the first three results from the call.
Otherwise, returns three values: the next function, the table t, and nil, so that the construction
for k,v in pairs(t) do body end
will iterate over all key�Cvalue pairs of table t.
See function next for the caveats of modifying the table during its traversal.
ipairs (t)If t has a metamethod __ipairs, calls it with t as argument and returns the first three results from the call.
Otherwise, returns three values: an iterator function, the table t, and 0, so that the construction
for i,v in ipairs(t) do body end
will iterate over the pairs (1,t[1]), (2,t[2]), ..., up to the first integer key absent from the table.
원래pairs는 테이블의 모든 키 값이 맞습니다.만약 쥐 아저씨의 루아 간단명료한 강좌를 보았다면, 테이블이 키 값이 맞는 데이터 구조라는 것을 알 수 있을 것이다.
ipairs는 키 값 1부터 고정적으로 시작하여 다음 키에 1을 누적하여 옮겨다니며 키에 대응하는value가 존재하지 않으면 옮겨다니기를 멈춘다.겸사겸사 기억도 간단하다. i를 가진 것은 인덱스 키 값에 따라 1부터 옮겨다니는 것이다.
예를 보여 주세요.
tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"}
for k,v in ipairs(tb) do
print(k, v)
end
출력 결과는 다음과 같습니다.
1 oh
2 my
3 god
tb는 tb[4]가 존재하지 않기 때문에 여기까지 돌아다녔습니다.
for k,v in pairs(tb) do
print(k, v)
end
결과 출력:
1 oh
2 my
3 god
6 world
5 hello
우리는 모든 내용을 출력할 것이라고 짐작할 수 있다.그러나 출력의 순서가 tb의 순서와 다르다는 것을 발견했다.
만약 우리가 순서대로 출력하려고 한다면 어떻게 합니까?방법 중 하나는 다음과 같습니다.
for i = 1, #tb do
if tb[i] then
print(tb[i])
else
end
물론 단지 하나의 수조일 뿐이라면 ipairs도 문제없다.
이상
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.