// 공부한다 할 때 필요한 것들을 따로 모아두는 것 (요구사항들)
protocol Studying {
var hours: Int { get set } // hours의 값을 외부에 알려줄 수 있고(get), 새롭게 지정할당할 수 있음(set)
func study()
}
// Studying 프로토콜을 따라서 작동하는 Student struct 구조체
// Studying 프로토콜에 있는 study() 함수를 이 구조체 안에 구현을 해줌
struct Student: Studying { // Studying 프로토콜의 요구사항을 따르겠다는 의미임
var name: String
var currentHours: Int = 5
// var hours: Int = 0 이렇게도 지정 가능하지만 get set 예시를 보여주자면,
var hours: Int {
get {
return currentHours
}
set {
currentHours = newValue // 새로운 값을 지정해주는 키워드!
print("지금까지 공부한 시간은: \(currentHours)시간 입니다.")
}
}
func study() {
print("공부 중")
}
}
let keen: Student = Student()
keen.study() // 공부 중 출력
keen.hours = 10 // 지금까지 공부한 시간은: 10시간 입니다 출력
위의 코드는 간단한 프로토콜 예시임
프로토콜에서 초기에 구현해놓은 메소드와 다른 동작을 하더라도 변경해주면 됨