swift
-
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에서 공부했던 것처럼 빈 값을 ..
-
swift - Optional Bindingswift 2021. 1. 4. 19:31
Optional Binding OptionalExpression이 return 하는 값이 있으면 let 변수에 unwrapping된 형태의 값이 저장된다. var num: Int? = nil // Forced Unwrapping // 값이 저장되지 않았을때 강제 추출하면 err 발생 // print(num!) // 근데 이런 형식으로는 거의 작성하지 않는다. if num != nil { print(num) } if let num = num { print(num) } var str: String? = "str" guard let str = str else{ // else 블록에서는 바인딩한 상수를 인식하지 못함 str fatalError() } str num = 123 if var num = num { n..