티스토리 뷰
아무튼 공부해보아욘!!!!
신나는 노래를 틀어봅시다. Marshmello x Kane Brown - One Thing Right 제가 요새 푹빠진 노래에요. 지금 이 글을 쓰는 날 기준으로 2일전에 나온 아주 핫한 신곡..입니다. 하하
음 순서는 Swift-evolution을 기준으로 할건데, 그때그때 봐가면서 순서는 조정할 듯 해요. 그리고 안다룰것도 많음 ㅎ
[SE-0242] Synthesize default values for the memberwise initializer
이 제안은 간단합니다!
class말고 struct를 생각해볼게요.
struct는 다들 아시다시피 memberwise initializer 를 제공합니다.
이렇게요.
기본값을 줘볼까요?
name에 명시적으로 "Zedd"라는 값을 할당해주었습니다.
class였으면 저 name은 initializer에서 초기값 할당을 안해줘도 되는 상황이지만
struct기 때문에..
내가 name을 빼버리면 에러가 나게 됩니다.
ㅎ개빡
내가 손수 initializer를 만들어줘야 함
ㅎ
ㅡ
ㅁ...
이쯤되면 이 제안의.....목적이 뭔지 감이오시죠?
맞습니다.
Synthesize default values for the memberwise initializer
그러니까, 음 이 제안의 개선사항(?),, 변경사항은 현재 class는 default intializer를 제공하잖아요? 모든 프로퍼티가 옵셔널 또는 기본값을 가지고 있을때요. 그 방식을 struct에도 도입했다.. 이겁니다.
흠 제가 이해한거 + 쉽게 말하자면 이건데,
"This proposal aims to solve a simple outstanding problem with the way the Swift compiler currently synthesizes the memberwise initializer for structures by synthesizing default values for properties with default initializers."
원문도 참고하세요.
자 아무튼 이제 이게 된다는 사실.
[SE-252] Key Path Member Lookup
아악 key path.......진짜 이제 ㅇㅏㄹ아야 할때가 ㅇㅘㅆ다.
저는 사실 Key Path를 전혀..쓰지않습니다. 헉 근데 이미 쓰고있는데 모르는건가..? 암튼 제가 ㅅㅐㅇ각하는 key path는 .\어쩌고 이건데 암튼 이건 안씀..
근데 이번에 SwiftUI에서도 .\ 이거 쓰고...암튼 알아야 할떄가 왔는데..지금은 아님ㅋㅎ아무나 key path속성 강의 해줬으면 좋곘다..
자 이번 변경사항은 기존의 @dynamicMemberLookup attribute가 이제 key path implementations을 지원하게 되었답니다,,
[SE-0254] Static and class subscripts
이게 도대체 무슨 소리일까..한참을 봤군여
ㅁ ㅓ 이런 struct가 있다고 생각해봅시다. swift 문서에 있는 예제코드를 가져왔습니다. 암튼 이런애임.
근데 이번 제안은 모냐면, static subscript, 또는 class에선느 class subscript선언을 허용하는 부분임ㅎ 이라는 변경사항입니다. TypeName[index]또는 TypeName.self[index]를 통해 사용할 수 있으며 subscript에 대해 기대할 수 있는 모든 기능을 갖는다고 해요.
ㅇㅋ static을 Swift 5.0에서 붙혀보쟈
당연하겠죠?
Swift 5.1에서 붙혀보죠.
뭔가 터지는 중. 고쳐봅시다.
자 고쳐봤는데요, 달라진 부분을 찾아봅시댜.
먼저 multiplier가 static var로 바뀌었구요 static이라 3이라는 기본값을 줬습니다.
그러니 static subscript메소드 안에서도 TypeName으로 multiplier를 접근해야겠죠.
그리고 어쩌구 저쩌구 한담에 TypeName[index]를 했더니..
아까처럼 18이 나온 결과를 볼 수 있습니다.
제안쪽 예제코드 보니까
뭐 이렇게 쓰는데 암튼..알아서 쓰셈
이 static subscript를 사용해서 dynamic member lookup을 static property까지 확장할 수 있다고 합니다.
진짜 이제 key path랑 dynamic member lookup을 공부할때가 진짜 왔나부다..
[SE-0255] Implicit returns from single-expression functions
이거 인정이다..진짜..
구구절절 설명 됐고...구구절절 설명보고싶으면 proposals가서 보셈
computed property같은 경우, 거의 single-expression일텐데요,
그래서 보통 이렇게 적죠.
하지만 지독한 생략충인 사람에 의해 return이 빠진다면..?
이런이런~~~return 을 빼먹으면 안된다구~~~ㄹ하하하!!
지독하다 지독해..Swift 5.0...
~ Swift 5.1 ~
응 가능이야~~
다시 한번 말하지만 single-expression에서만 가능이구요
이럴땐 return 써줘야ㅕ함.
엥 proposals에서 끝났네..뭐지
제가 이렇게 찾고있는데..끝나ㅂ렸음..물론 중간중간 안한거 있읍니다 ㅎ 근데 내가 분명이 wwdc에서 본...걔네가 없네
이렇게 되면 Xcode 11 beta release note로 간다.
[SR-7799] Matching optional enums against non-optional values
ㅎ ㅏ....ㅋㅎ
이거 빡쳐안빡쳐
저게 옵셔널인 순간...?
알았다구요.....
지독하다..지독해..Swift 5.0..
저 .none과 ?가 싫어서
강제 언래핑...을 사용하곤 했는데요.
~ Swift 5.1 ~
?를 안써도 되게 되었읍니다..!! 하지만 .none일 경우는 반드시 필요하겠죠?
[SE-0244] Opaque Result Types
오 얘 진짜..
아 proposals무슨..이해 못하겠음 ㅅㄱ 지독한 설명은 proposal가서 보시구요
간단히 말해서,
이제 function은 정확한 return type을 지정하는 대신, 준수하는 프로토콜을 선언하여 concrete return type을 숨길 수 있습니다.
큭ㅋ큭ㅋ...한번에 이해시켜주지..SwiftUI에서 보게되는
바로 저 some..!!!이 이번 제안의 주인공입니다. 그럼 옆에 View는 프로토콜임?
뭐 이런게 가능해진다는것이다..!!!
proposal보면..뭐..추상화..generic...reverse generic..뭐 이런이야기가 많은데 날잡고 읽어보면 좋을 듯 합니다.
Property Wrapper쓰면 이런거에 조음 ㅎ 어쩌구 저쩌구
헉..
이렇게 쓸 수 있다구!~~~!~!!~
Property wrapper를 만들어야 하나? 판단기준은 간단해보이는데요,
패턴이 있냐 없냐? 위 UserDefault같은 경우에는 패턴이 보이죠. UserDefault에 get / set하는 패턴이죠. 뭔가 이런데 사용해~~라고 제시하는거 보니까 거의 get / set 애들인듯
ㅇㅇㅋ 그럼 함 만들어보자
struct든 뭐든 @propertyWrapper라고 타입 선언 앞에 달아줍니다.
그리고 유저디폴트에 필요한게 머야 일단 key랑 value자나요??
그거 선언해주고 근데 value는 뭐가들어올지 모르니까 generic으로 한 부분임
그래서 어쩌고 저쩌고 해주면...된다.
뭐 사실 Property wrapper는..생각 외로 별거 없네요? Xcode 11 beta 2진짜 미쳤네...아니 그냥 아무것도 안한 프로젝트 빌드하는데도 이렇게 날아갈것같다니..도대체 뭐가 문제야.. 2017년형이 이러면 어쩌자는건지 플레이그라운드는 잘만 되더니 ㅡㅡ 지금 턱 막히니까 할 생각이 사라짐 ㅎㅎ; 암튼 전ㄴ Property wrapper에 대해 할말이 더 있는데..그건 나중에 봐야겠어요.
'Swift' 카테고리의 다른 글
Relative Date Time Formatter / List Formatter 사용해보기 (1) | 2019.07.06 |
---|---|
Swift 5.1 ) Ordered Collection Diffing (1) | 2019.07.06 |
Swift ) 'public' modifier is redundant for instance method declared in a public extension (0) | 2019.04.17 |
Swift 5.0 Released! (2) | 2019.03.26 |
Swift로 PS할 때 유용한 메소드들 (0) | 2019.03.02 |
- swift tutorial
- 피아노
- 제이슨 파싱
- swift sort
- IOS
- Git
- UIBezierPath
- swift 공부
- swift array
- np-hard
- swift delegate
- Xcode
- WKWebView
- WWDC
- SwiftUI
- Swift
- github
- 스위프트
- np-complete
- Combine
- iOS delegate
- Accessibility
- ios 13
- FLUTTER
- swift3
- actor
- 회고
- 스위프트 문법
- WidgetKit
- fastlane
- Total
- Today
- Yesterday