检查序列标量中是否存在值的可能方法

时间:2017-10-17 17:19:08

标签: scala

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构造

的任何可能方法

1 个答案:

答案 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")