gpt4 book ai didi

scala - 使代码更具功能可读性

转载 作者:行者123 更新时间:2023-12-01 09:43:07 26 4
gpt4 key购买 nike

我正在查看以下代码段。当 map-getOrElse 和嵌套 patten 匹配在代码中增加时,它看起来并不那么优雅。你有什么更好的选择建议?

 case MyMessage =>
val image = (request \ "image").asOpt[String]
image.map { im =>
val conf = (request \ "confirmation").asOpt[String]
conf.map { cf =>
//code to retrieve ride

ride match {
case Some(r) =>
if (booleanCondition) sender ! SuccessCommand(JsBoolean(true), command)
else sender ! FailureCommand("Problem updating", command)
case None => sender ! FailureCommand("Ride empty", command)
}

} getOrElse (sender ! FailureCommand("Missing number", command))

} getOrElse (sender ! FailureCommand("Missing image", command))

最佳答案

每当您使用生成选项的函数映射选项时,您应该考虑是否应该使用 flatMap :

def f(x: Int): Option[Int] = Some(x + 1)

f(1).flatMap(x => f(x)).flatMap(y => f(y)) // Some(4)
f(1).flatMap(x => f(x)).flatMap(y => f(y)).getOrElse(0) // 4

你也可以为此使用 for-comprehensions,当你有很长的链时,这对于拥有干净的代码非常好:

(for(x <- f(1); y <- f(x); z <- f(y)) yield z).getOrElse(0)

关于scala - 使代码更具功能可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22793179/

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