23.07

최완식·2023년 8월 2일
0

Retrospection

목록 보기
17/18
post-thumbnail

23년 07월을 회고해본다.

잘한점

  • 프로젝트 파일 구조 변경
  • 문서 백업 스크립트 만듬!! 후후 이제 언제든 다른 플랫폼으로 이동할 수 있음.
  • 집중해서 핫픽스 문제 해결
  • 디버그 메뉴 골격 및 화면 구성.
  • 꾸준한 운동 3달째 달성중.

못한점

  • 마음에 화가 많아졌다.
  • 개발 서적 공부 및 비트코인 공부를 할 수가 없었다.
  • 블로그 글을 쓰지 못했다.

배운 내용

// AS-IS
if let crossoverData = data.crossover,
   let id = crossoverData.id,
   let name = crossoverData.name {
    self.crossover = AuxTypeData(id: id, name: name)
} else {
    self.crossover = nil
}

// TO-BE    
let crossover = aux.crossover.flatMap {
    curry(AuxTypeData.init(id:name:)) <*> $0.id <*> $0.name
}

public func curry<A, B, C>(_ f: @escaping (A, B) -> C) -> (A) -> (B) -> C {
    { a in { b in f(a, b) } }
}

public func <*><A, B>(lhs: ((A) -> B)?, rhs: A?) -> B? {
    guard let lhs = lhs,
          let rhs = rhs else {
        return nil
    }

    return lhs(rhs)
}
  • 연속적으로 nil이 뜨는 구조의 경우에는 flatMap을 사용하자.
  • 내부 변수가 nil인 경우 instance가 생성될 수 없는 경우다.
  • 원래 같으면, nil 체크를 한다음에 없으면 nil로 세팅해줬는데,
  • 생성자가 함수인점을 이용해서 currying을 사용하여 일단 인자와 함수와의 커플링을 없앤다.
  • 그 다음, 함수와 인자가 nil인 경우에 대한 연산자(<*>)를 정의하고, 그럴 경우 nil을 던지는 것으로 처리한다.

다짐

  • C언어 강의
  • SwiftUI 강의
  • 구현패턴

이거 언제함?

  • 비트코인에 관련되어서 내가 아는 내용을 바탕으로 모식도를 그려봐야 할듯.
  • 지갑앱을 만들어보는 것도 좋음
  • 이 과정에서 Swift UI 사용
  • 시중에 나와 있는 지갑앱이 약간 별로임.
  • 아침에 좀더 일찍 일어나야 할듯 ㅠ
  • 체지방 22%를 위해 달려보자.
profile
Goal, Plan, Execute.

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기