[TypeScript] 자료 구조로 담아내기. #3 - 배열(with. 경계 검사)

고라니드로고라니드로
1 min read

이번 편은 이전 편으로부터 이어집니다.

배열을 다룰 때 가장 중요한 것은 유효한 메모리 경계를 검사하는 일입니다. 경계 검사를 수행하지 않아 유효하지 않은 위치에서 연산을 수행하게 되면 위험한 결과를 초래할 수 있기 때문입니다. JavaScript와 같은 고수준 언어에서는 인연이 없는 이야기로 들릴 수도 있지만 조금만 알아봅시다.

경계 검사

편의상 배열 연산에 사용되는 인덱스는 모두 정수로 상정합니다.

function checkBounds(l: number, r: number, i: number): void {
    if(i >= l && i <= r) { return; }
    throw new RangeError("...");
}

별도의 함수로 작성하는 것이 민망할 정도로 매우 간단한 함수입니다. 이를 사전에 호출하는 것만으로도 위험을 미연에 방지할 수 있습니다.

적용

class BasicArrayImpl<T> implements BasicArray<T> {
    private slots: T[] = [];

    get(index: number): T {
        checkBounds(0, this.slots.length - 1, index);
        return this.slots[index];
    }

    set(index: number, element: T): void {
        checkBounds(0, this.slots.length - 1, index);
        this.slots[index] = element;
    }

    // ...
}

getset에 대해서 간단히 적용해 보았습니다. 이제 우리의 코드는 위협으로부터 안전합니다!

내용은 다음 편에서 이어집니다. 읽어주셔서 감사합니다!

묻고 답하기

개인적인 판단에 의해 적절하다고 여겨지는 경우, 모두가 볼 수 있도록 이곳에 문답이 추가됩니다. 그렇지 않더라도 질문에 대한 답변은 별도로 이루어집니다.

0
Subscribe to my newsletter

Read articles from 고라니드로 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

고라니드로
고라니드로