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
}
@discardableResult
public func setMessage(_ message: MessageType) -> Self {
switch message {
case .needSignIn:
self.message = message.description
case .message(let string):
self.message = string
}
return self
}