Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[[nicholas & July] swift에서 역할은 protocol로 보는것이 맞을까요? #31

Open
Kim-EunsooSilver opened this issue Dec 14, 2021 · 4 comments

Comments

@Kim-EunsooSilver
Copy link
Collaborator

마침 이번 장에서도 4장과 동일한 예시가 나오기에 떠올랐습니다~!

지난번 제 질문 토끼는 왜 역할로 분류하지 않았을까요? 관련해서 의견을 나누던 중 역할에 대해서 저희가 이야기를 나누어 봤습니다.

저는 역할을 Swift에서 protocol로 이해를 했었는데요!
다른 분들 의견으로는 역할에 대한 타입을 정의하고, 그 역할을 수행하는 객체는 역할을 상속받은 것 이라고 하셨던걸로 기억합니다!!

저는 이번 장을 읽고 역할을 Protocol로 보는 것이 맞다는 생각이 좀 더 확고해졌습니다.

제가 잘못이해 한것이 아닐까 싶어서 다른 분들의 이견이 있는지 알고싶습니다~!

@hayeonhee
Copy link
Contributor

저는 역할을 수행하는 방법 중 하나가 Protocol 이라고 생각하고 있었어요!
역할이 추상적인 개념이라서, protocol을 사용하지 않고도 역할을 수행하는 타입을 여럿 두는 식으로 역할을 수행한다-라고 할 수 있지 않을까요?

@yanghojoon
Copy link
Collaborator

Protocol은 역할을 정의하는 방법 중 하나라고 생각합니다!
다만 역할 = Protocol이라고 보는 것은 어렵지 않나 생각이 듭니다.

Protocol 없이 타입 만으로도 충분히 역할을 만들어 줄 수 있지 않을까요?

@jsim27
Copy link
Collaborator

jsim27 commented Dec 15, 2021

저는 이번 장을 읽고도 역할은 "타입"(타입 정의) 이라고 생각합니다. 물론 Protocol도 타입처럼 취급될 수 있기에 Protocol도 역할이 될 수 있는 것 같아요.
니코가 이번 장을 읽으시고 더욱 역할을 Protocol로 생각하게 되신 이유가 궁금합니다.

@yeahg-dev
Copy link
Collaborator

yeahg-dev commented Dec 15, 2021

저도 역할을 protocol로 보는게 맞다고 생각하는데요,
좀 더 디테일하게 말하면 Protocol을 타입으로서 사용하면 역할로 사용할 수 있다고 생각했습니다.

  1. 역할은 책임의 집합이고, 2) 대체가능하다는 점에서 착안했을 때
    프로토콜이 위 두가지를 충족시켜주는 수단이 될 수 있다고 봤습니다.

예를 들어 심판이라는 프로토콜을 정의하면,

  1. 심판의 역할을 수행하기 위한 책임들을 정의할 수 있으며,
  2. 이 프로토콜을 따르는 어떤 객체라도 심판의 책임들을 수행할 수 있습니다.
protocol 심판 {
      func 증언하라( )
      func 목격자를_불러오라( )
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants