The Swift Programming Language. Extensions (2)

Methods 익스텐션은 이미 존재하는 타입에 새 인스턴스 메소드와 타입 메소드를 추가할 수 있다. 다음의 예시는 새 인스턴스 메소드 repetitions을 Int 타입에 추가한다. extension Int { func repetitions(task: () -> Void) { for _ in 0..<self { task() } } } repetitions(task:) 메소드는 하나의 () -> Void 타입 아규먼트를 받는다. 이 익스텐션을 정의한 후에는 repetitions(task:)메소드를 어떠한 정수에서도 호출할 수 있다. 3.repetitions { print("Hello!") } // Hello! // Hello! // Hello! Mutating Instance Methods 익스텐션에서 추가된 인스턴스 메소드는 인스턴스 자체를 수정(mutate)할 수도 있다. self나 self의 프로퍼티를 수정하는 스트럭처나 열거형은 메소드도 기존 구현의 뮤테이팅 메소드처럼 반드시 mutating으로 지정되어야 한다. ...

June 29, 2023

The Swift Programming Language. Extensions (1)

Extensions 익스텐션(Extensions)은 이미 존재하는 클래스, 스트럭처, 열거형, 프로토콜에 새로운 기능을 추가한다. 이는 원본 코드에 접근할 수 없는 타입(retroactive modeling 라고도 함)에 대한 확장도 가능하다. 스위프트의 익스텐션은 다음과 같은 행동을 할 수 있다. 컴퓨티드 인스턴스 프로퍼티 혹은 컴퓨티드 타입 프로퍼티 추가 인스턴스 메소드 혹은 타입 메소드 정의 새로운 이니셜라이저 제공 서브스크립트 정의 새로운 중첩 타입 정의 및 사용 이미 존재하는 타입이 프로토콜 준수하도록 함 스위프트에서는 프로토콜도 확장(extend)하여 요구사항 구현을 제공하거나, 그 프로토콜을 준수하고 있는 타입들이 사용할 수 있는 추가 기능을 제공할 수도 있다. ...

June 29, 2023