구조체, 열거형

ulls12·2023년 12월 18일
0

Swift TIL

목록 보기
17/60
post-thumbnail

구조체(Struct)

  • 클래스와 마찬가지로 프로퍼티에 값을 저장하거나 메서드를 통해 기능을 제공하고 캡슐화할 수 있는 사용자 정의 타입
  • 생성자(initializer)를 정의하지 않으면 구조체가 자동으로 생성자를 제공한다
  • 값 타입이다
  • 상속이 불가능하다
struct Coffee {
	var name: String?
    var size: String?
    func brewCoffee() -> String {
    	if let name = self.name {
        return "\(name)) 한 잔 나왔습니다"
        } else {
       	return "오늘의 커피 한 잔 나왔습니다"
	}
}
let americano = Coffee(name: "아메리카노")
struct ShoppingListItem {
	let name: String?
    let qauntity: Int
    var purchased = false
}
let item1 = ShoppingListItem(name: "칫솔", quantity: 1)
let item2 = ShoppingListItem(name: "치약", quantity: 1, purchased: true)
let item3 = ShoppingListItem(name" nil, quantity: 1, purchased: true)

열거형(Enum)

  • 관련된 값으로 이루어진 그룹을 같은 타입으로 선언해 타입 안전성을 보장하는 방법
  • 값 타입이다
  • Swift의 열거형은 연관 값을 가질 수 있다. 이는 각 case가 특정 값을 연결하여 저장할 수 있는 기능을 제공한다
  • enum은 switch 문과 잘 어울린다
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
func processTrade(trade: Trade) {
	switch trade {
    case .buy(let stock, let amount):
    	print("Buy \(amonut) shares of \(stock).")
    case .sell(let stock, let amount):
    	print("Sell \(amount) shared of \(stock).")
    case .hold:
    	print("Hold this position")
    }
}
processTrade(trade: trade1) // 출력: Buy 100 shares of AAPL.
profile
I am 개발해요

0개의 댓글