Generic 모델링에서 시작합니다. 아래와 같은 Animal 프로토콜이 있을 때, 이를 사용하는 Farm struct의 메서드에서 Animal의 Concrete 타입으로 대체될 타입파라미터적합성을 따르도록 적용할 수 있습니다. protocol Animal { associatedtype Feed: AnimalFeed func eat(_ food: Feed) } struct Farm { func feed(_ animal: A) { // ... } } 혹은 아래처럼 후행 where절에서 프로토콜 적합성을 지정할 수 있습니다. where절은 디테일하게 requirement와 타입 관계를 작성할 수 있게 해줍니다. struct Farm { func feed(_ animal: A) where A: Animal {..
https://developer.apple.com/videos/play/wwdc2022/110352/ Generic 모델링에 some/any를 적용하는 방법을 설명한 WWDC22 영상입니다. Farm을 시뮬레이션 하기 위한 예시. 추상화 도구들을 사용하기 전의 Concrete 타입의 예시부터 작성. Concrete 타입으로 먼저 모델링 Cow 구조체는 Hay(건초) 타입의 매개변수를 받는 eat()이라는 메서드가 존재하고, Hay 구조체는 Alfalfa 종류의 작물을 재배하기 위한 grow()라는 static 메서드가 존재. Alfalfa 구조체는 Alfalfa인스턴스에서 Hay를 수확할 수 있는 harvest() 메서드가 존재. Farm 구조체는 Cow에게 먹이를 줄 수 있는 feed() 메서드가 있음..
WWDC22(Platforms State of the Union)에서 Swift의 변경점을 정리해봅니다. 개별 세션의 내용을 참조한 내용들도 있으며, 글은 계속 수정될 수 있습니다. Async Algorithm Package await 키워드: 두 비동기 시퀸스를 zip으로 묶는 작업이 가능하게 해줍니다. try-catch: 네트워크 스트리밍되는 비동기 데이터로 인한 네트워크 장애를 처리할 수 있게 해줍니다. throttle 키워드: 새로 추가된 키워드. 시퀸스로부터의 업데이트를 늦춰주는 시간 기반 알고리즘을 제공. (기존) actor : 스레드로부터 안전한 동시성 실행 코드를 사용해 데이터를 격리하게 해줍니다. Swift는 의도치않게 병렬 스레드 간에 그런 상태를 공유하는 것을 막아줍니다. async/..