728x90
반응형
안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️입니다.
오늘의 포스팅은 WWDC 2023의 다섯 번째 - 스위프트의 새로운 기능에 대해 알아보도록 하겠습니다.
1. 조건문의 표현식 변경
2. Result Builder ( Type Check 속도 향상 )
3. 제네릭
새로 추가된 기능이 다양하여 총 3개의 포스팅으로 나누어 작성을 하였습니다.
1. Swift 오픈소스
- Swift 커뮤니티, Swift.org에 모인 여러 관계자 및 사용자가 함께 언어를 발전시키고 있습니다.
- Swift-evolution 를 통해 새로운 기능이나 중요한 동작 등의 변경 사항은 애플에서 공개적으로 제안되고 검토됩니다.
- 자세한 사항은 Swift-evolution 대시보드에서 확인할 수 있습니다.
2. If-Else 및 Switch 문을 표현식으로 사용
// 이전 코드
let bullet =
isRoot && (count == 0 || !willExpand) ? ""
: count == 0 ? "- "
: maxDepth <= 0 ? "▹ " : "▿ "
- 이전의 복잡한 조건을 기반으로 위와 같이 let 변수를 초기화하려면 읽기 어려운 복합 삼항 표현식을 사용해야 하였습니다.
// 표현식을 사용한 코드
let bullet =
if isRoot && (count == 0 || !willExpand) { "" }
else if count == 0 { "- " }
else if maxDepth <= 0 { "▹ " }
else { "▿ " }
- If-Else 문을 사용하여 복잡한 삼항 표현식을 간단하게 표현할 수 있습니다.
- 이전에는 아래와 같이 Closure 를 사용한 래핑 방법을 사용
// 이전 코드
let attributedName = {
if let displayName, !displayName.isEmpty {
AttributedString(markdown: displayName)
} else {
"Untitled"
}
}()
- 이전에는 Closure 형태를 사용하여 초기화하였습니다.
// 표현식을 사용한 코드
let attributedName =
if let displayName, !displayName.isEmpty {
AttributedString(markdown: displayName)
} else {
"Untitled"
}
- If-Else 문을 표현식으로 사용할 수 있기 때문에 간단하게 표현 가능합니다.
2. Result Builders
- 빠른 Type Checking 동작
- 향상된 코드의 완성
- 명확한 에러메세지 노출
3. Generic
- 표준 라이브러리인 Array 타입은 제네릭을 사용하여 어떤 종류의 데이터도 저장할 수 있는 목록을 제공한다.
- 위와 같이 제네릭은 요소 값을 추론하기 때문에 명시적으로 매개변수의 요소의 타입으로 지정하지 않아도 된다.
- 이전에는 제네릭스를 사용할 때 인수 타입과 변화 타입의 갯수에 따라 일일히 작성해줘야 하는 번거로움이 존재하였습니다.
- 그렇기 때문에 위와 같이 정의되지 않는 갯수를 매개변수로 사용하면 에러가 발생되곤 했습니다.
- 단일 타입 매개변수인 Result에 Each를 사용하여 선언합니다.
- evaluate 함수가 각 Result 타입의 개별 요청을 받아들입니다.
- 위와 같이 사용함으로써 evaluate 함수가 제한 없이 모든 인수 길이를 처리합니다.
이상으로 [WWDC 2023] (5) 스위프트의 새로운 기능 - 1 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~
참고
728x90
반응형
'Apple 🍎 > WWDC 2023' 카테고리의 다른 글
[WWDC 2023] (7) 스위프트의 새로운 기능 - 3 (0) | 2023.09.12 |
---|---|
[WWDC 2023] (6) 스위프트의 새로운 기능 - 2 (0) | 2023.09.08 |
[WWDC 2023] (4) Swift Macro (0) | 2023.09.06 |
[WWDC 2023] (3) SwiftData (0) | 2023.08.29 |
[WWDC 2023] (2) Widget 확장 (0) | 2023.08.28 |