Ben aynı kodlama desenli birkaç işlevi vardır: kodum az, benFonksiyon
private def updateDomainObjectValidationStatus(f1: Long => Option[DomainObject],
parameter1: Long,
f2: DomainObject => Option[DomainObject],
paramter2: String,
valid: Boolean): Option[DomainObject] ={
val somethingMaybe = f1(parameter1)
somethingMaybe match {
case Some(something) =>
f2(
something.copyMe(updatedBy = Some(paramter2),
validationStatus = if(valid) Some(DataEntryValidationStatus.Valid) else Some(DataEntryValidationStatus.Invalid))
)
case None =>
throw new DomainException(s"Object with ID: '$parameter1' doesn't exist")
}
}
olarak yeni bir özel fonksiyon yazmak tekrarlanan yapmak için
def updateFooValidationStatus(fooId: Long, user: String, valid: Boolean): Option[Foo] = {
val fooMaybe = fooDao.getFooById(activityId)
fooMaybe match {
case Some(foo) => {
fooDao.update(foo.copy(updatedBy = Some(user),
validationStatus = if (valid) Some(DataEntryValidationStatus.Valid) else Some(DataEntryValidationStatus.Invalid))
)
}
case None =>
throw new DomainException(s"Foo with ID: '$fooId' doesn't exist")
}
}
trait DomainObject { ... }
case class Foo(...) extends DomainObject { ... }
Yukarıdaki değişikliklerle, ancak, bir güncelleştirme nedeniyle updateFaviValidationStatus içinde updateDomainObjectValidationStatus'u arayamıyorum
type mismatch, expected (DomainObject) => Option[DomainObject], actual (Foo) => Option[Foo]
İlginçtir bir parametreye n hata, bu
(Long) => Option[Foo]
Ne için bir kod deyimsel Scala tasarım moda olacak sürer ilk parametreyi
(Long) => Option[DomainObject]
şikayet etmiyor Yukarıdaki kod çalışır?
'' '' '' '' '' işlevler değil, bunlar – pedrofurla