소피it블로그

[Swift] 100 Days of Swift - Day 8 정리 본문

개발_iOS/스위프트

[Swift] 100 Days of Swift - Day 8 정리

sophie_l 2022. 3. 27. 23:30

https://www.hackingwithswift.com/100/8

 

Day 8 – 100 Days of Swift

Follow the 100 Days of Swift and learn to build apps for free.

www.hackingwithswift.com

1. Structure or Struct: 사용자가 만드는 타입 중 하나로, 자신만의 변수, 상수, 함수를 가질 수 있고 사용자가 원하는 대로 구현할 수 있다. 구조체 안의 변수 및 상수는 프라퍼티라고 부른다.

 

⭐️ 2. computed property: 대비되는 개념으로는 stored property가 있다. computed properties calculate values on the fly.

struct Food {
	var name: String
	var isKoreanFood: Bool
	var koreanFoodOrNot: String {
		if isKoreanFood {
			return "\(name) is a Korean food."
		} else {
			return "\(name) is not a Korean food."
		}
	}
}

let taco = Food(name: "taco", isKoreanFood: false)
print(taco.koreanFoodOrNot)

// computed property는 항상 explicit한 타입이 있어야 하며, 상수는 computed property가 될 수 없다.

⭐️ 3. property observer: 프라퍼티의 변경 이전이나 이후에 코드를 실행하게 해줌. willSet{ }은 프라퍼티가 변경되기 전, didSet { }은 프라퍼티가 변경된 후에 코드를 실행하는데 willSet은 거의 사용하지 않음. 또한, 상수는 변경되지 않기 때문에 상수 프라퍼티에는 property observers를 설정해줄 수 없음.

 

4. 구조체의 메서드: 구조체 안에 함수를 써줄 수 있는데, 이를 메서드라고 함. 선언은 func로 동일

 

⭐️ 5. 구조체의 메서드를 통해 프라퍼티를 바꾸고 싶으면 mutating 키워드를 사용해야 함

struct Person {
	var name: String
	mutating func makeAnonymous() {
		name = "Anonymous"
	}
}

var person = Person(name: "Kat")
person.makeAnonymous()

// 값이 변경되기 때문에 constant가 아닌 variable에 대해서만 가능

6. String, array: 스트링과 배열도 구조체이기 때문에 자신만의 다양한 메서드와 프라퍼티가 있음