중화사전망 - 중국어 사전 - 왜 배열은 예외를 throw 하고 사전은 그렇지 않습니까?
왜 배열은 예외를 throw 하고 사전은 그렇지 않습니까?
우리가 배열을 방문할 때, 만약 우리가 이 선을 넘으면, 우리는 분명히 오류를 받게 될 것이다. Swift 언어를 예로 들어 보겠습니다.
배열에는 세 가지 요소만 포함되어 있지만 아래 첨자 10 을 사용하여 액세스하면 범위를 벗어난 오류가 발생합니다.
그러나 사전에 없는 요소를 방문할 때 비슷한 상황이 발생하지 않습니다!
같은 질문, 다른 대우, 왜?
Swift 에서 배열 및 사전 아래 첨자 액세스의 구현을 살펴보겠습니다.
이 두 가지 구현을 비교하면 문제의 원인을 얻을 수 있습니다.
따라서 배열의 경우 swift 는 치명적인 오류만 얻을 수 있습니다. 사전은 선택적 값을 반환합니다. 사고가 발생하면 아래 첨자가 오류를 던질 수 없더라도 사전은 느긋하게 nil 을 반환할 수 있습니다.
실제로 배열을 확장하여 배열이 경계를 벗어나도 예외가 발생하지 않는 버전을 구현할 수 있습니다.
확장 키워드를 사용하여 배열을 확장합니다. 우리가 원래의 아래 첨자 방법을 덮어쓸 수 없다는 점에 유의해야 한다.
우리가해야 할 일은 새로운 아래 첨자 방법을 추가하고 외부 매개 변수를 명시 적으로 지정하는 것입니다. 이제 이렇게 배열에 액세스할 수 있습니다.
구독할 때 태그를 추가해야 합니다. 이때, 우리는 이미 선을 넘었지만, 사전과 같은 nil 을 수확했다.