Swift/swift 문법
-
hashable 프로토콜Swift/swift 문법 2023. 4. 9. 22:55
- 고정된 길이의 숫자이면서 유일한 값으로 출력 Hashable의 의미 : 해당 타입을 해시함수의 input값으로 사용가능하다. swift에서는 String,Int,double 등의 기본 타입이 hashable 하다. -> hashable프로토콜 채택으로 값의 유일성을 보장할 수 있도록 만든다. hashable프로토콜의 요구사항 func hash(into hasher: inout Hasher) 구조체: hashable프로토콜만 채택하고 상세 구현은 선택 클래스: hashable 채택 후 요구사항 구현 필수
-
프로토콜 - Equatable, ComparableSwift/swift 문법 2023. 4. 3. 01:11
Equatable : '==' 오퍼레이터 오버로드가 필요 Comparable : 채택 시 비교 연산자 사용 가능 > , = ... Int Double String 에서는 채택 안해도 됨 미리 만들어 놓은 메서드 사용 -> Enum, struct, class에서 사용. 1.열거형에서 comparable 사용시 원칙: Comparable을 채택한 경우라도, *less then 연산자를 직접 구현해야 한다. Comparable 프로토콜 생성시 필수적으로 구현해야하는 매서드는? 1) == 2) >= 3) 드래그하시면 답을 볼 수 있습니다. 정답) 3 해설) less then 이외의 것은 같다 아니면 크다가 되므로..! Comparable 프로토콜은 Equatable 프로토콜을 상속받는다. -> 상위의..
-
확장에서의 생성자 사용Swift/swift 문법 2023. 3. 29. 00:22
클래스 - 편의생성자만 구현 가능하다. (self.키워드로 생성자 지정) 델리게이트 어크로스 : 편의생성자는 궁극적으로 지정생성자를 호출해야한다 // 참고 : 상속에서의 생성자 위임 규칙 1) 델리게이트 업 : 지정생성자는 슈퍼클래스의 지정생성자를 반드시 호출해야한다 2) 델리게이트 어크로스 : 편의생성자는 궁극적으로 지정생성자호출해야한다 구조체 - 지정생성자 형태로도 구현 가능하다.(자유) import Foundation class Aclass { var x: Int var y: Int init(x: Int, y: Int) { self.x = x self.y = y } convenience init() { self.init(x: 0, y: 0) } } class Bclass: Aclass { var z..
-
에러 처리Swift/swift 문법 2023. 3. 27. 21:21
함수에서 에러가 발생하는 경우 이를 알릴 수 있는 수단이 필요함. : 에러가 나올 수 있는 함수에는 표시하기로 함 (throws 키워드) 에러타입 정의 enum Errors: Error { case errorMax case errorMin } : 사전에 에러타입을 정의해주어야함. func checkError(a:Int) throws -> Bool{ // :throws 키워드로 에러를 던질 수 있음을 알림 if a > 5 { throw Errors.errormax //5 이상인 경우 에러타입 반환 } } 에러가 발생할 수 있는 함수 실행 방법 do { let result = try checkError(m:5) //try키워드 필수, 함수가 정상적으로 실행 된 경우에 result에 할당 } catch { /..
-
Result TypeSwift/swift 문법 2023. 3. 27. 20:19
: 에러가 발생하는 경우 에러를 외부로 던지는 것이 아니라, 리턴 타입 자체를 Result Type으로 구현하여 함수 실행의 성공과 실패를 담아서 리턴 Result Type 사용 이유: try구문으로 에러 처리를 하기 힘듦 -> 타입 자체에 에러를 던질 수 있는 타입을 만들어준다. Result Type -> 열거형으로 구현 case success(Success) case failure(Failure) : 연관값을 반드시 필요로 한다. func resultType(m: Int) -> Result { if m > 5 { //throw 키워드가 아닌 return 키워드 이용 return Result.failure(valueError.maxError) //failure열거형 채택, 내부의 error중 maxEr..
-
스위프트 : 익스텐션 extensionSwift/swift 문법 2022. 9. 7. 21:40
익스텐션 구조체, 열거형, 클래스, 프로토콜 타입에 새로운 기능을 추가할 수 있음. 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의 하는 것은 불가. 클래스의 상속과 비교하였을 때, 상속은 수직 확장 익스텐션은 수평 확장임. 익스텐션은 클래스 이외에도 구조체, 프로토콜, 제네릭 등 모든 타입에서 활용 가능함. 사용 방법) extension 확장할 타입 이름 : 프로토콜1, 프로토콜2 { //프로토콜 요구사항 구현 }