-
WWDC 2022 - Swift 5.7Swift 2022. 6. 13. 09:41
안녕하세요. 그린입니다🟢
이번 포스팅에서는 Swift 5.7에서 소개된 사항들 및 개선된 부분들에 대해 알아보려합니다.
우선 이번 포스팅에서는 조금 자세하게 언급되는 부분도 있을것이고 아직 학습을 다 마치지 못해 가볍게 넘어가는 부분도 있으니 참고해주세요🙌
Unwrapping Optionals Gets an Improvement
옵셔널 바인딩을 통한 언래핑 시 if let과 guard let을 통해 진행해줄 수 있는건 다들 아실거에요.
기존에는 아래와 같이 쉐도잉이라고 불리는 작업이 필요했어요.
var name: String? = "GREEN" if let name = name { print(name) }
여기서 쉐도잉이란 if 혹은 guard 바인딩 문에서 사용될 프로퍼티에 옵셔널한 값을 추출해 넣어주는 것입니다.
즉 if let x = x { }의 형태를 말하죠.
기존 쉐도잉 작업이 크게 불편한건 아니였지만 아래와 같이 변수명이 되게 길어지면 중복되어 길어지게 사용해야됨으로 그러한 불편함이 어느정도는 있었어요.
var codeNameWithUsediOSDevelopment: String? = "GREEN" if let codeNameWithUsediOSDevelopment = codeNameWithUsediOSDevelopment { print(codeNameWithUsediOSDevelopment) }
물론 저 긴 변수를 그대로 쉐도잉하지 않고 아래와 같이 사용해도 되긴합니다.
var codeNameWithUsediOSDevelopment: String? = "GREEN" if let name = codeNameWithUsediOSDevelopment { print(name) }
저랬을때의 문제는 되게 모호해지죠.
명확하게 나타내고자 저렇게 길게 변수명을 가져갔는데 바인딩에서 사용되는 블럭 구문에서는 다시 모호한 네이밍이 되버립니다.
그래서 이번 Swift 5.7에서 도입된게 저 쉐도잉을 줄여줬습니다.
즉 이제 아래와 같이 사용할 수 있습니다.
var name: String? = "GREEN" if let name { print(name) }
아주 간단하고 간결하게 표현이 가능해졌습니다🙌
Multi-statement closure type inference
클로저 내 반환 타입에 대해 자동 타입 추론을 해줌으로 명시적으로 반환 타입을 넣어줄 필요가 없어지게 되었습니다.
기존에는 아래와 같이 클로저에서 다른 타입으로 반환할 경우에 꼭 명시적으로 반환 타입을 넣어줬어요.
let ages = [10, 20, 30, 40, 50] let ages = ages.map { age -> String in return "Green Age is \(age)" }
이렇게 흔히 다 알고 계신것처럼 말이죠!
그런데 이제는 아래와 같이 저 반환 타입? 없어도 타입 추론 해줍니다..!
let ages = [10, 20, 30, 40, 50] let ages = ages.map { age in return "Green Age is \(age)" }
하긴 너무 타입 추론을 못해주는 경향이 많은 컴파일러긴 했어요..
더불어서 아래와 같이 대부분 타입 추론 성능이 개선된 부분이 많다고 느껴졌습니다.
아래의 WWDC 공식 영상에서 기존 Swift 5.6과 Swift 5.7에서의 타입 추론 성능 비교 시간을 보시면 말도 안되게 개선되었어요.
뭐 실제 프로덕트에 도입해서 확실히 해봐야 알겠지만 베타로 돌려서 테스트 해볼때는 체감인지.. 성능 차이가 나는듯하게 보였습니다!
Clock, Instant and Duration
Task.sleep에서 많이 적용될것 같은 주제였어요.
곧 나노초 기반 API가 더 이상 지금처럼 많이 사용될것 같진 않아보입니다!
이 주제에 대해서 크게 파고들지 않아서 추후 다시 포스팅하려합니다ㅎㅎ
Regular expressions
https://developer.apple.com/videos/play/wwdc2022/110357/
Swift 언어로 정규식을 사용할 수 있도록 소개가 되었습니다.
이 부분은 학습하기에 정말 딥하게 보면 좋을 주제 같아서 아직 아.. 이런게 나왔구나!? 이정도만 표지만 보고 아직 학습전입니다ㅎㅎ
이 부분도 양이 많을거라 예상하기에 별도로 포스팅하려합니다🙌
🙋🏻 아래 포스팅에서 다뤘습니다!
https://green1229.tistory.com/280
마무리
전체적으로 꾸준히 코딩을 하기에 편한 언어 환경을 만들어주고 있는것이 보이네요😄
이번 포스팅은 Swift 5.7에서 소개된것의 극히 일부분이기에 천천히 하나씩 독파해봐야겠습니다.
[참고자료]
https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7'Swift' 카테고리의 다른 글
옵셔널을 다루는 방법들 (4) 2022.08.08 기본 타입을 Extension하여 편리하게 사용하기 (0) 2022.08.04 Swift5.6 - existential any (0) 2022.05.02 Result (With. Composable Architecture) (0) 2022.04.25 Property Wrapper (0) 2022.04.21