Ho la seguente classe:Come unire due variabili Option [String] in una quando si usa flatMap in Scala?
case class Profile(email: Option[String],
firstName: Option[String],
lastName: Option[String],
fullName: Option[String])
Ora voglio rimuovere l'attributo fullName
perché è ridondante. Tuttavia, ho un metodo nella mia classe User
che restituisce l'fullName
:
case class User(id: UUID, profiles: List[Profile]) {
// Skipped some lines
def fullName(loginInfo:LoginInfo) = profileFor(loginInfo).flatMap(_.fullName)
}
Ora sto cercando di sostituire la parte .flatMap(_.fullName)
con una concatenazione di firstName
+ lastName
. Come si può fare? Ho bisogno di fare una nuova Option[String]
, in questo modo:
def fullName(loginInfo:LoginInfo) = {
val firstName = profileFor(loginInfo).flatMap(_.firstName)
val lastName = profileFor(loginInfo).flatMap(_.lastName)
val fullName : Option[String] = Some(firstName + " " + lastName)
fullName
}
Grazie! Mi piace molto questo approccio. 'last <- profile.firstName' dovrebbe essere' last <- profile.lastName' invece. –
Restituisce 'None' se' firstName' o 'lastName' è' None' invece di lasciarlo vuoto e inserire lo spazio di separazione solo se necessario, come nella risposta di Synesso. –
Forse ho frainteso la domanda, ma questo risulterebbe in Nessuno se il primo o il cognome erano Nessuno. – Synesso