Demiryolu programlama F #
Sep 17 2020
Scott Wlaschin'in 'Etki alanı modellemesi işlevsel hale getirildi' kitabında anlatıldığı gibi sonucu kullanarak F #'daki demiryolu programlamasını kullanmaya çalışıyorum. Normalde bir işlevin yapısı vardır
let functionName parameter : Result<ResultType, ErrorType> =
result {
let! resultValue = someValidationAndTransformation parameter
return resultValue
}
Ancak hem Tamam hem de Hata durumunda bazı hesaplanan alanları da döndürmek istiyorum. Bulabildiğim en iyi şey
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
Bu değişebilir alan hoş görünmüyor. Hem Tamam hem de Hata durumunda hesaplanan alanları almanın daha iyi bir yolu var mı?
Yanıtlar
2 sdgfsdh Sep 17 2020 at 17:07
Bir kullanmak matchbu durumda:
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
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı