본문 바로가기
Apple🍎/WWDC 2023

[WWDC 2023] (5) 스위프트의 새로운 기능 - 1

by 텅빈비니 2023. 9. 7.
반응형

안녕하세요🐶

빈지식 채우기의 비니🙋🏻‍♂️입니다.

 

오늘의 포스팅은 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 타입은 제네릭을 사용하여 어떤 종류의 데이터도 저장할 수 있는 목록을 제공한다.

  • 위와 같이 제네릭은 요소 값을 추론하기 때문에 명시적으로 매개변수의 요소의 타입으로 지정하지 않아도 된다.

 

이전의 Generics

  • 이전에는 제네릭스를 사용할 때 인수 타입과 변화 타입의 갯수에 따라 일일히 작성해줘야 하는 번거로움이 존재하였습니다.
  • 그렇기 때문에 위와 같이 정의되지 않는 갯수를 매개변수로 사용하면 에러가 발생되곤 했습니다.

Each를 사용하여 매개변수 개수 반영

  • 단일 타입 매개변수인 Result에 Each를 사용하여 선언합니다.
  • evaluate 함수가 각 Result 타입의 개별 요청을 받아들입니다.
  • 위와 같이 사용함으로써 evaluate 함수가 제한 없이 모든 인수 길이를 처리합니다.

 

이상으로 [WWDC 2023] (5) 스위프트의 새로운 기능 - 1 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~


참고

반응형