[내일배움캠프 3주차 (01/15)]

yeseul jang·2026년 1월 15일

내일배움캠프

목록 보기
4/32

📌 stride(from:to:by:) / stride(from:through:by:)

✏️ 정의

  • stride는 일정한 간격(step)으로 값들을 생성하는 함수
  • 주로 반복문에서 증가폭을 직접 제어하고 싶을 때 사용

✏️ to vs through 차이

stride(from: 0, to: 10, by: 2)
// 0, 2, 4, 6, 8   (❌ 10 포함 안 됨)

stride(from: 0, through: 10, by: 2)
// 0, 2, 4, 6, 8, 10   (⭕️ 10 포함)


//인덱스를 2칸씩 건너뛰며 반복할 때

for i in stride(from: 0, through: 100, by: 10) {
    print(i)
}

📌indices

✏️ 정의

  • 컬렉션이 가진 “유효한 인덱스 범위”를 반환

Collection Types → Array / Collection

  • Swift의 모든 컬렉션이 0부터 시작하는 정수 인덱스를 쓰지 않아서 Array String Dictionary 모두 안전하게 순회하고 싶을 때 사용
  • 커스텀 Collection 다룰 때 사용

📌Slicing (ArraySlice, Substring)

✏️ 정의

  • 원본 컬렉션의 일부를 “복사 없이” 참조함
  • 성능 중요할 때 (불필요한 복사 방지)
  • 큰 데이터에서 일부만 사용할 때
let numbers = [1, 2, 3, 4, 5]
let slice = numbers[1...3]  // ArraySlice<Int>

print(type(of: slice)) // ArraySlice<Int>
// 원본과 인덱스 공유하기 때문에 필요시 Array 변환 필요

let newArray = Array(slice)

📌 prefix

✏️ 정의

  • 앞에서 N개 요소를 잘라서 반환
  • 반환 타입은 원본 타입이 아님(Collection의 SubSequence 타입)
let arr = [1, 2, 3, 4, 5]
let result = arr.prefix(3)
type(of: result) // ArraySlice<Int>
let newArray = Array(arr.prefix(3)) // 반환 필요

📌 shuffle() / shuffled()

✏️ 정의

  • 컬렉션 요소를 무작위로 섞음
var arr = [1, 2, 3, 4]
arr.shuffle()   // 원본 변경

let newArr = arr.shuffled() // 새 배열 반환

shuffle()	// 원본 변경
shuffled()	// 새배열 반환

📌Sequence

✏️ 정의

  • 한 번씩 순서대로 꺼낼 수 있는 타입(여러 번 순회 가능하다고 가정하면 위험)
  • 내부적으로 Iterator를 통해 하나씩 꺼냄
  • 지금 필요할 때 하나 생성하는 구조라서 몇 개 있는지 모를 수도 있음
  • lazy 데이터나 스트림 데이터에서 사용됨

📌Collection

✏️ 정의

  • CollectionSequence이면서 인덱스 접근 가능한 타입
  • 데이터가 이미 메모리에 있어 개수와 위치가 확정
  • 인덱스로 접근 가능
profile
iOS 개발

0개의 댓글