Bir oluşturucu deseni kullanılarak oluşturulan bir nesne varsayalım.Nesnenin alanlarını doğrulamanın en iyi yolu => Ya/Try (scala 2.10)/DoğrulamaNEL (scalaz)
Bu oluşturucu modeli, alanların doğrulanmasını ve ardından hedeflenen türe dönüştürmeyi odaklayan bir build
yöntemini içerir.
: ı bir okumak
(Scala 2.10 yeni özellik)
Either[FailureObject, TargetObject]
tipTry[TargetObject]
scalaz kütüphanesindenValidation[FailureObject, TargetObject]
veyaValidationNEL[FailureObject, TargetObject]
Either
türündeValidation
'un ana avantajları,Validation
"kutunun dışında" arızaları biriktirebilir.Peki ya "yeni"
Try
yolu nedir? BenTry
map
,flatMap
vb gibi kutusunun dışında "monadic" yöntemleri vardır fark ettim ... gerçekten neProjection
yardımı olmadan yazın ya eksikti. Bu nedenle, her bir saha doğrulama yöntemininTry[FieldType]
ve daha doğrusu, herhangi bir arıza durumunda,Try[SpecificFieldExceptionType]
; Bu,String
ileti alanı vebuild
yönteminde birikebilecek bir rootCause alanı içeren iç içe geçmiş.Scala 2.10'u kullanarak,
Try
uygulamasının yapıcı modelinde olduğu gibi basit doğrulama için scalaz doğrulama kitaplığının yerini alabilir mi?** DÜZENLEME * ***
, buTry
kaynak kodunu okuyarakTry
birkaç istisna birikir ve böylece yönlendirilmiş başarısız hızlı olamayacağını geliyor.def flatMap[U](f: T => Try[U]): Try[U] = this.asInstanceOf[Try[U]]
birikim özelliği kolları
ValidationNEL
ait Aksine: bileTry.flatMap
birikim kavramını yok bu yüzden potentential önceki başarısızlık döner ve.Herhangi bir onay?
Daha iyi bir cevap hayal edemezsiniz => çok iyi açıklanmış! Çok teşekkürler :) Gerçekten, Builder'ım ile çalışmak için Doğrulama'yı seçtim. – Mik378
@ Mik378 Teşekkürler! – mergeconflict