Я кодировал для понимания и кое-что задавался вопросом:
def updateUserStats(user: User): Either[Error,User] = for {
stampleCount <- stampleRepository.getStampleCount(user).right
userUpdated <- Right(copyUserWithStats(user,stampleCount)).right // ?????????
userSaved <- userService.update(userUpdated).right
} yield userSaved
def copyUserWithStats(user: User, stamples: Long): User = {
val newStats = user.userStats.copy(stamples = stamples)
user.copy(userStats = newStats)
}
Кажется, что использование copyUserWithStats, которое не возвращает, не может быть использовано непосредственно в для понимания, потому что у него нет методов map/flatMap.
Поэтому мне интересно, в этом случае это подходящее решение для использования Right(copyUserWithStats(user,stampleCount)).right
По крайней мере вроде работает...
Кстати, я также пробовал с Option, но это не сработало, может кто-нибудь объяснить, почему?
def updateUserStats(user: User): Either[Error,User] = for {
stampleCount <- stampleRepository.getStampleCount(user).right
userUpdated <- Some(copyUserWithStats(user,stampleCount))
userSaved <- userService.update(userUpdated).right
} yield userSaved
Спасибо