Protocol 프로토콜은 구현 내용이 제거된 struct 혹은 class이다. 함수나 변수가 정의되었지만 내용이 없는 코드는 다음과 같이 생겼다. protocol Moveable { func move(by: Int) var hasMoved: Bool { get } var distanceFromStart: Int { get set } } 프로토콜을 정의해두면 다른 struct나 class가 해당 프로토콜을 포함하여 명세에 대한 구현을 할 수 있다. struct PortableThing: Moveable { // must implement move(by:), hasMoved and distanceFromStart here } 결국 어느 struct나 class가 어느 프로토콜을 포함하여 정의된다는 것은 다..