23년 07월을 회고해본다.
// 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을 던지는 것으로 처리한다.이거 언제함?
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.