특정 부분을 구현하기위해 달성해야 하는 메소드와 프로퍼티드을 나열한 것.
예시)
protocol SomeMethodProtocol{
func execute(cmd:String)
func showPort(p:Int)->String
}
struct RubyService : SomeMethodProtocol{
func showPort(p: Int) -> String {
return "Port : \\(p)"
}
func execute(cmd: String) {
if cmd == "start"{
print("실행합니다.")
}
}
}
구조체나 열거형은 프로토콜의 메소드에 mutating 키워드가 추가되어 있지 않을 경우 프로퍼티의 값을 변경할 수 없다.
일반적으로 프로토콜에서 메소드 선언에 mutating 키워드가 붙지 않은 것은 2가지로 해석가능
mutating 키워드가 붙지 않은 메소드를 구현체에서 구현시 프로퍼티 값을 변경하면 오류 발생
mutating 키워드가 붙은 메소드를 구현체에서 구현시 프로퍼티를 수정하지 않을 경우 생략가능