prefix(_:) 메소드는 주어진 수(n)만큼의 요소를 포함하는 배열 또는 다른 컬렉션의 부분 시퀀스를 반환한다.
이 메소드는 Collection 프로토콜에 정의되어 있으며, 배열(Array), 세트(Set), 리스트(List) 등 다양한 컬렉션 타입에서 사용할 수 있다.
** 빠르게 접근한다는 점에서 사용할 수 있겠지만 안전하게 컬렉션을 가져오는데에 있어서도 사용할 수 있다. ** 만약 n이 컬렉션 전체 개수 보다 크거나 같을 때, 오류없이 컬렉션 전체를 리턴하기 때문이다.
정의된 수의 요소 반환: 컬렉션에서 시작 부분부터 지정된 n 개의 요소를 추출하여 새로운 시퀀스로 만든다.
예를 들어, [1, 2, 3, 4, 5].prefix(3)
은 [1, 2, 3]
을 결과로 반환한다.
안전한 사용: 만약 n이 컬렉션의 전체 개수보다 크거나 같다면, prefix(_:)는 컬렉션 전체를 반환한다. 따라서 인덱스 오류의 위험이 없어 안전하게 사용할 수 있다.
용도: 이 메소드는 데이터의 일부분만 필요할 때 매우 유용하다.
예를 들어, 사용자 입력을 기반으로 상위 몇 개의 결과만 보여줄 때나 큰 데이터 세트에서 소량의 데이터만 빠르게 접근하고 싶을 때 사용할 수 있다.
위에서 사용한 예제를 map으로 구현이 가능하다.
map은 Collection 프로토콜을 따르는 모든 타입에 적용할 수 있다. Swift의 배열(Array), 문자열의 문자(Character) 시퀀스, 범위(Range), 그리고 사용자 정의 컬렉션 등 다양한 타입에서 map을 사용할 수 있다.
[1, 2, 3, 4, 5]
이라는 배열을 num_list라고 했을때, n개 만큼 리턴을 한다고 하면
0...n-1 이라는 범위(range)에 map을 사용하여 이걸 파라미터로 num_list[$0]
를 생성할 수 있다.
(0...n-1).map { num_list[$0]}
를 사용하면 Array를 생성할 수가 있는 것이다.