[swift] swift5
swift5 변경된 부분에 대하여 알아보겠습니다.
Release note url : https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes/swift_5_release_notes_for_xcode_10_2
1. Enhancing String Literals Delimiters to Support Raw Text
- 여는 따옴표 앞에 #이 있는 String literal은 하나의 literal로 처리한다.
- swift5이전 방식과 혼용가능
swift 5swift 5 이전
print(#"<a href="\#(url)" title="Apple Developer">"#) | print("<a href=\"\(url)\" title=\"Apple Developer\">" |
2. Result type
- https://developer.apple.com/documentation/swift/result
- 결과값에 사용하기 좋은 기본 enum이 생김
swift 5swift 5 이전
enum APIError: Error {... | |
func fetchModel<T: Decodable>(completion: @escaping (Result<T,APIError>) -> Void) { ... | func fetchModel<T: Decodable>(completion: @escaping (T?, APIError?) -> Void) { ... |
3. Dynamically callable
- 인스턴스를 마치 함수처럼 접근 가능하게함
swift 5swift 5 이전
@dynamicCallable struct NalzzaGenerator { func dynamicallyCall(withArguments args: [Int]) -> Date? { var dc = DateComponents() dc.year = args[0] dc.month = args[1] dc.day = args[2] return Calendar.current.date(from: dc) } } let nalzzaGenerator = NalzzaGenerator() nalzzaGenerator(2019, 4, 1) |
struct NalzzaGenerator { func generate(year: Int, month: Int, day: Int) -> Date? { var dc = DateComponents() dc.year = year dc.month = month dc.day = day return Calendar.current.date(from: dc) } } let n = NalzzaGenerator() n.generate(year: 2019, month: 4, day: 1) |
4. Enum variadic arguments disable
- 열거형에 가변인수 불가능
swift 5swift 5 이전
enum X { case foo(bar: [Int]) }
func baz() -> X { return .foo(bar: [0, 1, 2, 3]) }
|
enum X { case foo(bar: Int...) }
func baz() -> X { return .foo(bar: 0, 1, 2, 3) } |
5. Flatten nested optionals resulting from 'try?'
- 중첩된 Optional 방지 기능이 있다
swift 5swift 5 이전
let result = try? database?.countOfRows(matching: predicate) |
|
Int? | Int?? |
6. _ExpressibleByStringInterpolation protocol remove
#if compiler(<5) extension MyType: _ExpressibleByStringInterpolation { /*...*/ } #else extension MyType: ExpressibleByStringInterpolation { /*...*/ } #endif
#swift 강의
#swift 기초 강의
#swift 기초 문법
#아이폰 프로그래밍
#아이폰 개발
#ios programming
#ios develop
#iphone
#xcode
#swift 변경
#swift5 새로운 부분
#swift5 Release note
'IT > Swift' 카테고리의 다른 글
[swift] Map, Filter, Reduce, Monad, FlatMap (0) | 2019.09.16 |
---|---|
[swift] Architecture mvc/mvp/mvvm/viper/vip 비교 (0) | 2019.08.21 |
[swift] guard (0) | 2019.08.21 |
[swift] Protocol (0) | 2019.08.21 |
[swift] try? try! try (0) | 2019.08.21 |