Pemrograman kereta api F #
Sep 17 2020
Saya mencoba menggunakan pemrograman kereta api di F # menggunakan hasil seperti yang dijelaskan dalam buku Scott Wlaschin 'Pemodelan domain dibuat berfungsi'. Biasanya suatu fungsi memiliki struktur
let functionName parameter : Result<ResultType, ErrorType> =
result {
let! resultValue = someValidationAndTransformation parameter
return resultValue
}
Tapi saya ingin mengembalikan juga beberapa kolom kalkulasi, baik dalam kasus Ok dan Error. Yang terbaik yang bisa saya dapatkan adalah
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
Bidang yang bisa berubah ini tidak terlihat bagus. Apakah ada cara yang lebih baik untuk mendapatkan kolom kalkulasi dalam kasus Ok dan Error?
Jawaban
2 sdgfsdh Sep 17 2020 at 17:07
Saya akan menggunakan a matchdalam situasi ini:
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