2013-09-01 150 views
0

我有以下代码段我仍然在学习斯卡拉,并没有真正使用情况下的案件:但我想转换if语句,我有更多的斯卡拉做事的方式:斯卡拉:如果案件转换

... 
.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 
    })) 
} 

回答

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 
} 
+0

实际上flatmap我使用我一直在使用,如果是从Twitter的API问题TypePipe前我以后不能做任何地图或组,因为否则不会返回适当的类型。我想我喜欢你的第一个解决方案。 –

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 
}