final
키워드를 사용하면 더 이상의 상속을 막을 수 있음.// 연관 값을 가진 열거형 선언
enum Trade {
case buy(stock: String, amount: Int)
case sell(stock: String, amount: Int)
case hold
}
// 열거형의 인스턴스 생성 및 사용
let trade1 = Trade.buy(stock: "AAPL", amount: 100)
let trade2 = Trade.sell(stock: "GOOG", amount: 50)
let trade3 = Trade.hold
// switch 문을 사용하여 연관 값 추출
func processTrade(trade: Trade) {
switch trade {
case .buy(let stock, let amount):
print("Buy \(amount) shares of \(stock).")
case .sell(let stock, let amount):
print("Sell \(amount) shares of \(stock).")
case .hold:
print("Hold this position.")
}
}
// 각 열거형 케이스에 따라 다른 동작 수행
processTrade(trade: trade1) // 출력: Buy 100 shares of AAPL.
processTrade(trade: trade2) // 출력: Sell 50 shares of GOOG.
processTrade(trade: trade3) // 출력: Hold this position.
위와 같이 연관값을 가진 열거형을 선언하고, 그 안의 정보를 switch 구문을 사용해서 추출할 수도 있다.
class UserProfile {
let username: String
init?(username: String) {
guard username.count >= 5 else { return nil }
self.username = username
}
}
if let validProfile = UserProfile(username: "user123") { print("Valid username: \(validProfile.username)")
} else {
print("Invalid username. Username should be at least 5 characters long.")
}
if let invalidProfile = UserProfile(username: "user") {
print("Valid username: \(invalidProfile.username)")
} else {
print("Invalid username. Username should be at least 5 characters long.")
}
딕셔너리를 어떤 식으로 사용할 수 있는지 어느정도 가늠잡을 수 있는 문제였다.
온전히 내 지식으로 풀어낸 문제는 아니다. 그렇다보니 다른 힌트들을 많이 접하고, 이를 그대로 활용하려는게 아니라 내 방식대로 녹여내려고 노력했다. 그 과정에서 딕셔너리의 키값을 추출해서 사용하는 방법이랑... value값을 추출해서 사용하는 방법이랑... 조금 익숙해 진 것 같지만 다음에 다른 문제에서도 활용해보려고 노력해보는 게 좋을 것 같다.