CustomStringConvertible & @discardableResult

이건준·2022년 11월 15일
0

CustomStringConvertible

  • 여러개의 종류에 따라 다른 리턴값을 반환하고싶어할때 enum에 switch문을 이용하여 처리해준적이 많았다
  • 위와 같은 상황에서 CustomStringConvertible 프로토콜을 채택해준다면 description이라는 String타입을 원하는대로 반환가능하다
public enum MessageType: CustomStringConvertible, Equatable {
  case needSignIn
  case message(String)
  
  public var description: String {
    switch self {
    case .needSignIn:
      return "로그인이 필요합니다."
    case .message(let string):
      return string
    }
  }
}

@discardableResult

  • 우리가 리턴값이 있는 함수를 생성한 이후 사용할때 해당 리턴값을 사용해주지않는다면 노란문구로 경고해주는 것을 많이 본적이 있을 것이다
  • 위와 같은 경우에 "난 이 함수의 리턴값을 사용안할테니 경고안해줘도 돼"라고 말해줄 수 있는것이 @discardableResult 어노테이션이다
@discardableResult
  public func setTitle(_ title: String) -> Self {
    self.title = title
    return self
  }
  
  /// 2. 메세지 설정.
  @discardableResult
  public func setMessage(_ message: MessageType) -> Self {
    
    switch message {
      case .needSignIn:
        self.message = message.description
      case .message(let string):
        self.message = string
    }
    
    return self
  }

0개의 댓글