프로토콜과 프로토콜 채택한다는 것의 차이

도미닉
2 min readJun 7, 2019

--

안녕하세요. 도미닉입니다.

프로토콜에 대해서 특이한 예제를 발견해서 정리해보려고 합니다.

프로토콜과 프로토콜을 채택한다는 것은 분명히 다릅니다.

간단한 말인 것 같지만 혼돈하기 쉽습니다.

아래의 예제들을 먼저 보겠습니다.

이 상태에서는 9번째 줄은 true 이고 10번째 줄은 false 입니다.

이번에는 9번째 줄은 false 이고 10번째 줄은 false 입니다.

전체적인 설명을 먼저 드리겠습니다.

extension 을 사용해서 Int 타입이 Test 프로토콜을 채택하였습니다.

첫번째 예제는 배열의 요소가 Test 와 같으면 배열이 Test 프로토콜을 채택합니다.

두번째 예제는 배열의 요소가 Test 를 채택하였으면 배열이 Test 프로토콜을 채택합니다.

첫번째 예제에 Test 타입의 배열은 Test 프로토콜을 따르는 요소를 갖을 것이기 때문에 Element == Test 는 true 입니다.

반면에 Int 타입의 배열은 Test 프로토콜을 채택한 요소(Int)가 들어오기 때문에 Element == Test 는 false 입니다.

두번째 예제에 Test 타입의 배열은 Test 프로토콜을 따르는 요소를 갖을 것이기 때문에 Element: Test 는 false 입니다.

반면에 Int 타입의 배열은 Test 프로토콜을 채택한 요소(Int)가 들어오기 때문에 Element: Test 는 true 입니다.

Element == Test

프로토콜과 같다라는 의미를 조금 더 자세히 살펴보겠습니다.

위에 예제에서 Test 프로토콜 배열의 요소는 Test 프로토콜과 같습니다.

Test 프로토콜을 채택한 배열의 요소는 Test 프로토콜과 같지 않습니다.

Element: Test

프로토콜을 채택하다는 의미를 조금 더 자세히 살펴보겠습니다.

위에 예제에서 Test 프로토콜을 채택한 배열의 요소는 Test 프로토콜을 채택합니다.

Test 프로토콜 배열의 요소는 은 Test 프로토콜을 채택하지 않습니다.

정리

프로토콜과 같다는 것과 프로토콜을 채택했다는 것은 분명히 다른 의미입니다.

혼돈하지 않도록 조심해야겠습니다.

도움이 됬다면 박수버튼과 구독하기 부탁드립니다.

글 읽어주셔서 감사합니다.

--

--

No responses yet