Swift

Swift ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค

eddie0329 2021. 11. 21. 22:47
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • ๊ตฌ์กฐ์ฒด
  • ํด๋ž˜์Šค

๐Ÿ“Œ ๊ตฌ์กฐ์ฒด

๊ตฌ์กฐ์ฒด๋Š” value ํƒ€์ž… ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€๊ฑด ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค.

struct Cat {
  var name: String
}

let cat = Cat("helllo")
cat.name = "sam" // Error!

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

struct ๊ตฌ์ œ์ฒด์ด๋ฆ„ {
  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ
}

์˜ˆ์ œ

struct User {
  var nickname: String
  var age: Int

  var information2: String {
    get {
       return "\(nickname) \(age)"
    }
    set(newNickname) {
      nickname = newNickname
    }
  }

  func information() {
    print("\(nickname) \(age)")
  }
}

var user = User(nickname: "Eddie", age: 11)

user.nickname // Eddie
user.age // 11
user.age = 100
user.age // 100

user.information() //Eddie 100

๐Ÿ“Œ ํด๋ž˜์Šค

ํด๋ž˜์Šค๋Š” ์ฐธ์กฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

class ํด๋ž˜์Šค ์ด๋ฆ„ {
  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ
}

์˜ˆ์ œ

class Dog {
  static var breed: Bool = true // ํด๋ž˜์Šค ์ƒ์„ฑ์ž ์—†์ด ์ ‘๊ทผ ๊ฐ€๋Šฅ


  var name: String = ""
  var age: Int = 0

  init() {}

  init(name: String, age: Int) {
    self.name = name
    self.age = age
  }

  func introduce() {
    print("name: \(name), age: \(age)")
  }

  // ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋ ๋•Œ ํ˜ธ์ถœ
  deinit {
     print("deinit dog")
  }

  var gender: String = "Male" {
   // Observable
    willSet {
      print("\(newValue) !! ")
    }
    didSet {
      print("\(oldValue)!!")
    }
  }
}

var dog = Dog(name: "Kadon", age: 100)
dog.name // Kadon
dog.age // 100
dog.name = "Coco"
dog.age = 3
dog.name // Coco
dog.age // 3
dog.introdue() // name: Coco, age: 3

var dog2: Dog? = Dog()
dog2 = nil // deinit dog
๋ฐ˜์‘ํ˜•