리스트나 배열을 사용하다 보면 0번 이전의 마지막 인덱스나
마지막 인덱스 이후의 0번 인덱스를 검사해야하는 일이 자주 생긴다.
그때 매번 if ( 인덱스가 0보다 작아지면... ) 같은 방어코드를 짜야만
인덱스가 음수로 가거나 null이 뜨지 않는다.
이런 일이 자주 발생해서
그냥 자동으로 0보다 작은 값이면 마지막 인덱스로,
마지막 인덱스보다 큰 값이면 0번으로 보내주는 함수를 사용하면 코드가 간단해진다.
아래는 실제 사용한 벡터 리스트 버전 함수다.
값이 필요한 부분에 ListItem( List, index )를 넣으면 알아서 넘치거나 음수가 된 인덱스를 계산해서 값을 반환해준다.
Vector3 ListItem (List<Vector3> array, int index)
{
if (index >= array.Count)
{
return array[index % array.Count];
}
else if (index < 0)
{
return array[index % array.Count + array.Count];
}
else
{
return array[index];
}
}
배열을 이처럼 쓰고 싶으면 Count 대신에 Length를 넣고
인수는 배열로, 반환값은 배열 내용물로 적당히 바꿔주면 된다.
'📁 개발 히스토리' 카테고리의 다른 글
유니티 - 제네릭(Generic Type), 델리게이트(Delegate) (0) | 2023.04.16 |
---|---|
유니티 - 비트 플래그 (0) | 2023.01.06 |
유니티 - 좌표계 (0) | 2023.01.02 |
C++ - 벡터 클래스 구현하기(2) (0) | 2022.11.08 |
C++ - 벡터 클래스 구현하기(1) (0) | 2022.11.03 |