case class dummy(val prop:Seq[Test])
case class Test(val s :String)
case class Result(val s :String)
def myFunc:Result = {
val s = "11,22,33"
val t = Test(s)
val list = dummy(Seq(t))
val code = Option("25")
val result = code.exists(p => {
list.prop.exists(d => d.s.split(",").contains(p))
})
if (result) {
Result("found")
} else {
Result("Not Found")
}
}
我正在调用函数myFunc
,而不是使用if / else构造来计算布尔值。
避免使用If else构造
的任何可能方法答案 0 :(得分:0)
使用if/else
没有任何问题,但您可以这样做:
code
.flatMap(c => list.prop.find(_.s.split(",").contains(c)))
.map(_ => Result("Found")).getOrElse(Result("Not Found"))
这里的想法是,我们不是在每个阶段返回Boolean
,而是传递Option
。然后,如果定义了Option
,我们可以将其映射到Result("Found")
,如果未定义,.getOrElse
将返回Result("Not Found")
。