Scala中有什么像,
condition ? first_expression : second_expression;
我可以在scala的map函数中使用吗?我希望能够写出这样的东西:
val statuses = tweets.map(status => status.isTruncate? //do nothing | status.getText())
如果内联函数是不可能的,我怎么能在里面写一个条件map?
Scala中有什么像,
condition ? first_expression : second_expression;
我可以在scala的map函数中使用吗?我希望能够写出这样的东西:
val statuses = tweets.map(status => status.isTruncate? //do nothing | status.getText())
如果内联函数是不可能的,我怎么能在里面写一个条件map?
?运算符,有时称为三元运算符,在 Scala 中不是必需的,因为它包含在正则if-else表达式中:
val x = if (condition) 1 else 2
要在 a 中使用它map,您可以使用flatMap然后Option在if-else. 由于Option可以隐式转换为Iterable,因此列表被展平,并且Nones被过滤:
val statuses = tweets.flatMap(status => if (status.isTruncate) None else Some(status.getText))
这相当于使用mapand then flatten:
val statuses = tweets.map(status => if (status.isTruncate) None else Some(status.getText)).flatten
更惯用的是,您可以使用,collect它允许您在一个步骤中使用部分函数:filtermap
val statuses = tweets.collect {
case status if !status.isTruncate => status.getText
}
filter您也可以使用and分两步执行此操作map:
val statuses = tweets.filterNot(_.isTruncate).map(_.getText)
这里的缺点是这将遍历列表两次,这可能是不可取的。如果你使用view,你可以使用同样的逻辑并且只遍历列表一次:
val statuses = tweets.view.filterNot(_.isTruncate).map(_.getText)
你可以过滤然后映射,
val statuses = tweets.filter(_.isTruncate).map(status=> status.getText())