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 |