gpt4 book ai didi

scala - 在Scala中使用flatMap时,如何将两个Option [String]变量合并为一个?

转载 作者:行者123 更新时间:2023-12-04 13:47:53 26 4
gpt4 key购买 nike

我有以下类(class):

case class Profile(email: Option[String],
firstName: Option[String],
lastName: Option[String],
fullName: Option[String])

现在,我想删除 fullName属性,因为它是多余的。但是,我的类 User中有一个返回 fullName的方法:
case class User(id: UUID, profiles: List[Profile]) {
// Skipped some lines
def fullName(loginInfo:LoginInfo) = profileFor(loginInfo).flatMap(_.fullName)
}

现在,我尝试将 .flatMap(_.fullName)部分替换为 firstName + lastName的串联。如何才能做到这一点?我是否需要创建一个新的 Option[String],像这样:
def fullName(loginInfo:LoginInfo) = {
val firstName = profileFor(loginInfo).flatMap(_.firstName)
val lastName = profileFor(loginInfo).flatMap(_.lastName)
val fullName : Option[String] = Some(firstName + " " + lastName)
fullName
}

最佳答案

我认为这是for的良好应用。

case class User(id: UUID, profiles: List[Profile]) {
// Skipped some lines
def fullName(loginInfo:LoginInfo): Option[String] = for {
profile <- profileFor(loginInfo)
first <- profile.firstName
last <- profile.lastName
} yield s"$first $last"
}

关于scala - 在Scala中使用flatMap时,如何将两个Option [String]变量合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37317830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com