전체 글24 FP에서 Setter 사용법 이번에는 데이터에 값을 세팅하는 방법은 FP적으로 생각해보도록 하겠습니다. 간단한 튜플 하나를 만들었습니다. let pair = (42, "Swift") 42를 43으로 증가시키고 싶다면 값에 접근하는 방법이 있을 수 있겠습니다. let IncresedPair = ((pair.0 + 1), pair.1) 그렇다면 좀 더 나아가 FP방법으로 생각해보면 어떨까요? 먼저 증가하는 함수가 있어야 할 것이고 증가한 값을 바탕으로 새로운 튜플을 반환해야 하는 함수가 있어야 할 것입니다. 증가하는 함수 |> 연산자 정의에서 본 간단한 함수입니다. func increase(value: Int) -> Int { // (Int) -> Int value + 1 } 이제 increase함수를 파리미터로 받고 튜플을 새로 반환.. 2022. 12. 10. Circle Indicator 만들기 오늘은 어떤 작업을 기다릴 때 사용할 수 있는 인디케이터를 만들어 보겠습니다. 프레임워크에서 제공하는 것을 사용할 수도 있지만 커스텀해서 사용하는 경우가 많기 때문에 간단히 만들 수 있는 UI를 소개할까 합니다. @MainActor class UIActivityIndicatorView : UIView 인디케이터가 돌아가는 것을 볼 수 있게 원의 한 곳이 뚫린 UI를 만들 겁니다. 그려지는 UI는 같지만 방법은 두 가지로 설명드릴게요! 1) Path로 Shape를 만드는 방법 Shape는 View의 프로토콜은 따르는 타입입니다. 또한 (CGRect) -> Path를 구현해줘야 합니다. struct CirclePath: Shape { func path(in rect: CGRect) -> Path { //re.. 2022. 12. 8. Custom Operator => 이번 시간에는 https://devamor.tistory.com/6에서 배운 연산자 만들기를 통해서 새로운 연산자를 만들도록 하겠습니다. 아래의 코드를 보면서 설명드릴게요! func increaseTwo(value: Int) -> Int { // 인수를 받아서 2을 더해서 반환하는 함수 return value + 2 } func decreaseOne(value: Int) -> Int { // 인수를 받아서 1을 빼서 반환하는 함수 return value - 1 } 사용할 때! decreaseOne(value: increaseTwo(value: 5)) // print 6 ((Int) -> Int) -> Int increaseTwo함수의 반환 값을 decreaseOne 함수에 넣어서 결괏값을 출력합니다. 매.. 2022. 12. 2. Currying 함수 Currying을 알아보도록 하겠습니다. 예시도 어렵고 저도 이해하는데 꽤나 많이 걸려서 차근차근 정리해보도록 하겠습니다. "수학과 컴퓨터 과학에서 커링이란 다중 인수를 갖는 함수를 단일 인수를 갖는 함수들의 함수열로 바꾸는 것을 말한다." 간단히 말해서 함수에 인수들이 여러 개 일 때 한 개의 인수를 가지는 함수들로 바꾸는 것! 함수에 인수가 두 개이고 반환되는 값은 1개입니다. func add(x: Int, y: Int) -> Int { x + y } // (Int, Int) -> Int add(x:3, y: 2) // print 5 한 개의 인수를 가지는 함수들로 나열하는다는 것은 아래처럼 바뀌어야겠습니다. (Int) -> (Int) -> Int 함수의 시그니처 func add(x: Int) .. 2022. 11. 30. 이전 1 2 3 4 5 6 다음