Programação ferroviária F #
Sep 17 2020
Estou tentando usar a programação ferroviária em F # usando o resultado, conforme descrito no livro de Scott Wlaschin, 'Modelagem de domínio tornada funcional'. Normalmente, uma função tem a estrutura
let functionName parameter : Result<ResultType, ErrorType> =
result {
let! resultValue = someValidationAndTransformation parameter
return resultValue
}
Mas quero retornar também alguns campos calculados, tanto para Ok quanto para o caso de Erro. O melhor que consegui pensar foi
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
Este campo mutável não parece bom. Existe uma maneira melhor de obter os campos calculados tanto no caso de Ok quanto no caso de Erro?
Respostas
2 sdgfsdh Sep 17 2020 at 17:07
Eu usaria um matchnesta situação:
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
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino