Все мои методы API возвращают Future [Option [T]], пытаясь выяснить, как изящно выполнить следующее:
case class UserProfile(user: User, location: Location, addresses: Address)
Следующий код в настоящее время не компилируется, потому что пользователь, местоположение и адрес - все Опция [Пользователь], Опция [Местоположение] и Опция [Адрес]
val up = for {
user <- userService.getById(userId)
location <- locationService.getById(locationId)
address <- addressService.getById(addressId)
} yield UserProfile(user, location, address)
Я помню, что у scalaz есть OptionT, но я никогда не использовал его раньше и не уверен, как применить его к моей ситуации.
Если пользователь, местоположение или адрес фактически возвращают None, что произойдет при использовании OptionT, когда мне нужно применить его к 3-м моделям в этом случае?