Swift Academy · 강의

슬라이스를 다시 배열로 변환하기

슬라이스를 독립적인 배열로 구체화합니다.

레슨 3/413개 단계

슬라이스를 다시 배열로 변환하기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

슬라이스는 배열이 아닙니다

ArraySlice는 Array와 다른 별도의 유형입니다. 많은 API는 구체적인 Array를 요구하므로 자주 변환해야 합니다.

let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))

Array(slice)

슬라이스를 Array(...) 초기화 구문으로 감싸면 요소가 복사된 새 독립 배열이 만들어지고 인덱스가 0부터 다시 시작됩니다.

let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))

인덱스가 0부터 다시 시작됩니다

변환 후 새 배열은 부모 인덱스를 유지한 슬라이스와 달리 0부터 다시 인덱싱됩니다.

let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)

변환하면 저장 공간이 복사됩니다

변환하면 복사가 강제로 수행됩니다. 새 배열은 더 이상 부모와 저장 공간을 공유하지 않으므로 새 배열을 변경해도 original에는 영향을 주지 않습니다.

let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)

함수에서 배열 반환하기

함수가 배열의 일부를 반환할 때는 슬라이스를 변환하여 호출자가 일반적인 Array를 받도록 하십시오.

func firstThree(of nums: [Int]) -> [Int] {
    return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))

Array 매개변수에 전달하기

API 매개변수의 유형이 [Int]라면 슬라이스를 전달하기 전에 변환해야 합니다.

func total(_ values: [Int]) -> Int {
    return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)

변환이 필요하지 않은 경우

함수가 제네릭 Sequence 또는 Collection을 받는다면 변환하지 않고 슬라이스를 바로 전달할 수 있습니다.

func describe<S: Sequence>(_ s: S) where S.Element == Int {
    print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])

메모리 사용의 절충

슬라이스는 복사를 피하고 부모 저장 공간을 계속 유지합니다. 큰 배열의 작은 슬라이스를 오랫동안 보관한다면 배열로 변환하여 큰 버퍼를 해제할 수 있게 하십시오.

let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)

Set으로 변환

슬라이스를 Set과 같은 다른 컬렉션 초기화 구문에도 전달할 수 있습니다.

let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())

왕복 변환

슬라이스로 만든 다음 변환하고 다시 슬라이스로 만들어도 전혀 문제가 없습니다. 각 변환이 명시적이고 예측 가능합니다.

let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)

권장 방법

계산하는 동안에는 슬라이스로 계속 작업하고, 결과를 저장하거나 반환하는 경계에서만 Array로 변환하십시오.

let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)

빠른 확인

슬라이스 변환을 확인해 보세요.

정리

Array(slice)를 사용하면 ArraySlice를 0부터 시작하는 인덱스와 복사된 저장 공간을 갖춘 독립적인 배열로 바꿀 수 있습니다. API 경계에서 변환하고, 계산하는 동안에는 추가 복사를 피하기 위해 슬라이스를 유지하십시오.

let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)
무료로 시작

AI 튜터와 함께 Swift을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
122
레슨
409

자주 묻는 질문

“슬라이스를 다시 배열로 변환하기” 강의는 무료인가요?

네 — “슬라이스를 다시 배열로 변환하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“슬라이스를 다시 배열로 변환하기”에서 뭘 배우나요?

슬라이스를 독립적인 배열로 구체화합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“슬라이스를 다시 배열로 변환하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 범위로 슬라이스 만들기
  2. ArraySlice 인덱스 의미
  3. 슬라이스를 다시 배열로 변환하기
  4. prefix, suffix, dropFirst
← Swift Academy(으)로 돌아가기