분류 전체보기
-
swift - Nested Functionsswift 2021. 1. 5. 17:21
Nested Functions // Nested Function : 포함된 함수 // outer 함수밖에서는 inner함수를 직접 호출 불가능 //func outer() { // func inner() { // print("inner") // } // print("outer") //} outer() // inner() -> 호출불가능 //inner 함수를 어떻게 호출할 수 있을까? // outer 함수는 이제 파라미터도 없고 리턴타입도 없는 void를 리턴하는 형태 func outer() -> () -> () { func inner() { print("inner") } print("outer") return inner } // 리턴된 함수를 통해서 간접적으로 스코프를 확대하는 방법으로 사용가능 let f..
-
swift - Function Typesswift 2021. 1. 5. 16:56
Function Types 파라미터, 리턴형이 없는 함수 파라미터가 없는 함수 // 파라미터가 있는 함수 func printHello(with name: String) { print("Hello, \(name)") } let f2: (String) -> () = printHello(with:) let f3 = printHello(with: ) // 함수를 호출할때는 반드시 아규먼트 레이블을 호출해야 한다고 공부했지만 // 상수에 저장된 함수를 호출할때는 아규먼트 레이블을 호출하지 않는다. f3("World") 파라미터 있는 함수 // 파라미터가 있는 함수 func printHello(with name: String) { print("Hello, \(name)") } let f2: (String) -> (..
-
swift - Optional Patternswift 2021. 1. 4. 21:23
Optional Pattern let a: Int? = 0 let b: Optional = 0 // Optional이 열거형으로 구현되어 있고 case num 과 case some이 있다. // nil 과 .none은 동일한 의미 if a == nil { } if a == .none { } // 0과 .some(0)은 동일한 의미 if a == 0 { } if a == .some(0) { } // --------------------------------- if let x = a { print(x) } if case .some(let x) = a { print(x) } // Optional pattern // 장점 // 1. 코드 조금 더 단순해진다. if case let x? = a { print(x)..
-
swift - Optional Chainingswift 2021. 1. 4. 20:28
Optional Chaining struct Contacts { var email: [String: String] var address: String } struct Person { var name: String var contacts: Contacts init(name: String, email: String) { self.name = name contacts = Contacts(email: ["home": email], address: "Seoul") } } // 두가지만 기억하자 // 1. Optional Chanining의 결과는 항상 Optional이다 // 2. Optional Chanining에서 포함된 표현식 중에서 하나라도 nil을 리턴한다면 뒤의 표현식을 평가하지 않고 nil을 리턴한다..
-
swift - Nil-Coalescing Operatorswift 2021. 1. 4. 19:45
Nil-Coalescing Operator var msg = "" var input: String? = "Swift" if let inputName = input { msg = "Hello, " + inputName } else { msg = "Hello, Stranger" } print(msg) var str = "Hello, " + (input != nil ? input! : "Strinager") print(str) 이러한 과정을 Nil-Coalescing Operator를 사용하면 더 간단하게 추출 가능 // nil=coalescing operator는 이항연산자 // a와 b는 optional을 제외한 동일한 자료형이여야 한다. // 즉, a가 Optional String 이면 b는 String..
-
swift - IUO(Implicitly Unwrapping Optionals )swift 2021. 1. 4. 19:36
IUO(Implicitly Unwrapping Optionals ) // 자동으로 추출된다 let num: Int! = 12 let a = num // a상수의 자료형은? Int? (Optional Int) // 어? IUO는 자동으로 추출된다고 했는데 여전히 Optional 형식이네? -> IUO는 형식추론을 사용하는 경우 자동으로 추출되지 않는다. let b: Int = num // 이렇게 데이터 타입을 직접적으로 명시해주면 Optional 타입이 아니라 non-optional 타입으로 저장된다. // 즉, IUO는 사실 optional 타입이지만 특정 조건에서 자동으로 추출되는 느낌 // let num: Int! = nil 저장 가능 // 그러나 이전에 optional에서 공부했던 것처럼 빈 값을 ..