0

我有以下代码段,我仍在学习 Scala,并没有真正在案例中使用案例:但我想将我必须的 if 语句转换为更多的 scala 做事方式:

... 
.flatMap { 
case(title, subtitle, c, d, e, f, g, h) =>
  val tiitleSubTitle = (title + " " + subtitle).split("\\s").toSet.toList
  tiitleSubTitle.map(term => (
    if (a contains term)
    {
      Some(query, term, List(item_id).mkString(","))
    } else {
        None
    }))
}
4

2 回答 2

1

您可以替换 if 语句

if (a contains term)
{
    Some(query, term, List(item_id).mkString(","))
} else {
    None
}

和:

a contains term match {
    case true => Some(query, term, List(item_id).mkString(","))
    case false => None
}
于 2013-09-02T16:57:38.027 回答
1

如果不描述您要完成的工作,很难说,但也许您想要类似的东西:

Seq(title, subtitle)
  .flatMap(_ split "\\s")
  .filter(a contains _)
  .map((query, _, item_id)

但是,要直接回答您的问题:您可以替换

{ term => 
  if (a contains term) Some(query, term, item_id)
  else None
}

{
  case term if a contains term => Some(query, term, item_id)
  case _ => None
}
于 2013-09-01T00:45:29.553 回答