본문 바로가기

Smart Device/Swift42

Swift extension #6 Nested Types Nested Types예extension Int { enum Kind { case Negative, Zero, Positive } var kind: Kind { switch self { case 0: return .Zero case let x where x > 0: return .Positive default: return .Negative } }} func printIntegerKinds(numbers: [Int]) { for number in numbers { switch number.kind { case .Negative: print("- ", appendNewline: false) case .Zero: print("0 ", appendNewline: false) case .Positive: pri.. 2015. 6. 25.
Swift extension #5 subscript 확장 subscript 확장 extension을 사용하여 기존의 타입에 새로운 서브스크립트를 추가할 수 있다. 예를 들어, 123456789[0]을 입력하면123456789 중에서 오른쪽부터 0번째 있는 숫자를 리턴하라는 형태로 기능을 추가할 수 있다. 예extension Int { subscript(var digitIndex: Int) -> Int { var decimalBase = 1 while digitIndex > 0 { decimalBase *= 10 --digitIndex } return (self / decimalBase) % 10 }}746381295[0]// returns 5746381295[1]// returns 9746381295[2]// returns 2746381295[8]// retu.. 2015. 6. 25.
Swift extension #4 Mutating Instance Methods Mutating Instance Methodsextension을 사용하면 인스턴스 자체를 수정할 수 있다. 이런 경우에는 인스턴스 자체를 수정하는 Method 앞에mutating 키워드를 사용하면 된다. 예extension Int { mutating func square() { self = self * self }}var someInt = 3someInt.square()// someInt is now 9 2015. 6. 25.
Swift extension #3 Method의 확장 Method의 확장 예extension Int { func repetitions(task: () -> Void) { for _ in 0.. 2015. 6. 25.