철도 프로그래밍 F #
Sep 17 2020
Scott Wlaschin의 책 '도메인 모델링이 기능적으로 만들어 짐'에 설명 된대로 결과를 사용하여 F #에서 철도 프로그래밍을 사용하려고합니다. 일반적으로 함수에는 다음과 같은 구조가 있습니다.
let functionName parameter : Result<ResultType, ErrorType> =
result {
let! resultValue = someValidationAndTransformation parameter
return resultValue
}
그러나 Ok 및 Error 사례 모두에서 일부 계산 된 필드도 반환하고 싶습니다. 내가 생각 해낼 수있는 최선은
let functionName parameter : Result<ResultType, ErrorType> * CalculatedFields =
let mutable calculatedFields = {some defaultvalue}
let result =
result {
let! resultValue = someValidationAndTransformation parameter
let calculatedField = someCalculation resultValue
calculatedFields <- {calculatedFields with calculatedField}
return resultValue
}
result, calculatedFields
이 가변 필드는보기에 좋지 않습니다. Ok 및 Error 사례에서 계산 된 필드를 얻는 더 좋은 방법이 있습니까?
답변
2 sdgfsdh Sep 17 2020 at 17:07
match이 상황에서 사용합니다 .
let functionName parameter : Result<ResultType, ErrorType> * CalculatedFields =
let result = someValidationAndTransformation parameter
let calculatedFields =
match result with
| Ok x -> someCalculation x
| Error e -> { some defaultvalue }
result, calculatedFields