본문 바로가기

교육/Swift

[swift] extension

1. extension

objc의 cartegory


2. 샘플코드

class Car

{

    func go(){print("car go")}

    init(){print("car init")}

}

var c = Car()

c.go()


// 기존 클래스에 멤버 추가하기

extension  Car

{

    // 메소드 추가 가능

    func stop(){print("car stop")}

    

    // 지정생성자(일반 생성자) 추가 불가능 편의 생성자는 가능

    //    init(speed:Int){super.init()}

    // 편의 생성자 만들때는 반드시 지정 생성자(일반 생성자) 호출해야 한다.

    convenience init(speed:Int){self.init()}

    

    // 소멸자 deinit{} 만들수 없다.

    

    // 저장속성 안됌. 계산 속성(함수) 추가 가능

    //    var color:Int = 0

    //서브 스크립트는 가능(함수)

}

c.stop()


extension String

{

    //subscript

    subscript (idx : Int)->Character{

        get{

            let s1 = self;

            let rv = s1[s1.startIndex.advancedBy(idx)]

            return rv

        }

        set{

            let r1 = self.startIndex.advancedBy(idx) ..< self.startIndex.advancedBy(idx+1)

            self.replaceRange(r1, with: String(newValue))

        }

    }

}


var s : String = "hello"

// 아래 3줄이 실행되게 해보세요

s[0] = "X"

print(s)

print(s[2])

'교육 > Swift' 카테고리의 다른 글

[swift] protocol  (0) 2016.08.08
[swift] casting  (0) 2016.08.08
[swift] subscript  (0) 2016.08.08
[swift] method  (0) 2016.08.08
[swift] property  (0) 2016.08.08