Swift 확장 노트

1530 단어
기존 클래스, 구조체, 열거 유형, 프로토콜로 확장하여 새로운 기능 추가
확장은 Objective-C의 분류와 유사합니다.(Objective-C의 분류와 달리 Swift의 확장자는 이름이 없습니다.)
Swift의 확장은 다음과 같습니다.
  • 계산 실례 속성과 계산 유형 속성을 추가한다.
  • 실례 방법과 유형 방법을 정의한다.
  • 새 초기화기 제공;
  • 정의 하표;
  • 새로운 내장 유형을 정의하고 사용하기;
  • 기존 유형이 어떤 협의를 따르도록 한다
  • extension 키워드를 사용하여 확장을 선언합니다.
    extension SomeType {
        //
        // 
    }
    

    확장은 기존 형식을 하나 이상의 프로토콜에 따를 수 있습니다.이 경우 프로토콜 이름은 클래스 또는 구조체와 동일하게 작성됩니다.
    extension SomeType: SomeProtocol, AnotherProtocol {
        // implementation of protocol requirements goes here
    }
    

    확장은 기존 형식에 새로운 실례 방법과 형식 방법을 추가할 수 있습니다.다음 예제에서는 Int 유형에 repetitions라는 새 인스턴스 메서드를 추가합니다.
    extension Int {
        func repetitions(task: () -> Void) {
            for _ in 0..

    repetitions(task:) 방법은 ()->Void 형식의 단일한 실제 매개 변수를 수신합니다. 이것은 매개 변수가 없고 되돌아오는 값이 없는 함수를 나타냅니다.
    3.repetitions {
        print("Hello!")
    }
    // Hello!
    // Hello!
    // Hello!
    

    확장된 실례를 추가하는 방법은 여전히 실례 자체를 수정할 수 있다.구조체와 매거 유형 방법은self나 그 자체의 속성을 수정할 때 반드시 실례적인 방법을mutating으로 표시해야 하며 원래 실현된 이변 방법과 같다.
    extension Int {
        mutating func square() {
            self = self * self
        }
    }
    var someInt = 3
    someInt.square()
    // someInt is now 9
    

    아래 첨자
    extension Int {
        subscript(digitIndex: Int) -> Int {
            var decimalBase = 1
            for _ in 0..

    좋은 웹페이지 즐겨찾기