doc: https://docs.swift.org/swift-book/LanguageGuide/OpaqueTypes.html Opaque Types Opaque Types을 사용한 fuction이나 method는 리턴되는 값의 타입에 대한 정보를 숨기는 타입으로 반환된다. 함수의 반환 타입으로 구체적인 타입을 제공하지 않고, 반환 값이 채택하는 프로토콜로 묘사된다. 프로토콜 타입을 반환하는 것과 다르게 Opaque Types은 타입 정보를 보존한다. => 컴파일러는 타입 정보에 접근할 수 있지만, 모듈의 클라이언트는 그렇지 않다. Opaque Type을 사용하지 않을 시 protocol Weapon { func attack() } struct NoTypeWeapon: Weapon { func attack..