TIL(Today I Learned)

12월 20일(화)

공부한 내용을 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.

함수형 프로그래밍

  • 순수 함수로 프로그래밍 하는 것

순수 함수

  • 사이드 이펙트가 없는 함수. 입력이 동일하면 출력이 동일한 함수

사이드 이펙트

  • 내부 로직이 의존하는 외부 상태를 변화시킴으로써 내부 로직에 영향을 미치는 것

Identifiable

  • 값 타입의 인스턴스에 고유성(아이덴티티)를 부여하기 위해 채택하는 프로토콜
  • 값 타입의 두 인스턴스가 있다고 하자. 두 인스턴스 내부 프로퍼티 값이 동일하면 같은 값이 된다. 두개를 다르게 하고 싶을때? 이 프로토콜을 채택
  • SwiftUI에서는 뷰가 값타입이기 때문에 for문으로 생성한 뷰들의 고유성을 구분할 수가 없어서 Identifiable을 채택하도록 요구한다.
  • 그래야 for문으로 생성한 뷰 중에서 업데이트 등이 일어났을 경우 구분해서 반영을 할 수 있으니까 Identifiable을 채택하도록 요구하는게 아닐까 싶다. 🤔

Protocol Oriented Programming(P.O.P)

  • 프로토콜을 통해 값타입도 클래스 타입(객체 지향 프로그래밍)의 이점을 가능하게 하는 프로그래밍.
  • Encapsulation(관련된 데이터와 기능을 묶는것), Access control(외부에서 데이터 접근 막기), Abstraction(상속?), Namespaces(코드 영역?), Expressive syntax(뭐지? 🤔 dog.bark(), dog.age 이런거 말하는건가..), Extensibility(프로토콜 확장?)을 struct나 enum에서도 프로토콜을 통해 가능하게 하는것

Protocol

  • 타입을 추상화한 것이며, 특정 타입이 프로토콜을 채택하면 프로토콜이 요구하는 것들을 준수하게 하는것. 이로써 컴파일 타임에 잘못된 타입 구현으로 인해 생길 수 있는 문제를 방지
  • 타입 요구사항(?)

참고