2012-03-28 6 views
0

테이블의 복잡한 테이블을 만들고 변수를 인덱스로 사용했습니다. 어떤 이유로 나는 코드가 매우 버그가있는 문제가있었습니다.문자열과 정수 사이의 Lua 테이블 인덱싱 문제

은 내가 그래서 다른

myTable[tostring(index)] 

되기 위해 필요한

myTable[index] 

때때로 인덱스가 문자열의 역할을 할

를 문자열로 인덱스를 변환 할 필요가 있다고 밝혀졌다 그리고 다른 시간에 그것은 정수로 행동 할 것이다 (나는 결코 인덱스를 문자열로 변환하지 않았다. y를 코드에서 비록.

myTable[1]myTable["1"]이 생성되어 둘 다 다르므로 문제가 발생합니다 (k/v 쌍을 반복하므로 회 돌이가 발생하므로 myTable[1]이 표시되지 않음).

이것은 매우 이상한 행동이지만 예상 되나요? 이 키드 패드를 피할 수 있도록 항상 문자열 인덱스를 사용하는 테이블을 기반으로 새로운 유형을 만드는 방법이 있습니까?

답변

6

루아는 사용 된 문맥에 따라 문자열과 숫자 사이를 자동으로 강제 변환합니다 (manualwiki page 참조).

어딘가에 따라 파일에서 색인을 읽거나 문자열 연결 연산자 ..을 사용하면 문자열이됩니다. 내게는 숫자 인덱스 만 사용하려는 것 같습니다.

index이 숫자로 유지되도록하려면 파일 처리 또는 읽은 후 을 입력 한 후 tonumber()을 사용하십시오. 루아 테이블보기에서 1"1"은 다른 키입니다.