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))
这相当于使用map
and then flatten
:
val statuses = tweets.map(status => if (status.isTruncate) None else Some(status.getText)).flatten
更惯用的是,您可以使用,collect
它允许您在一个步骤中使用部分函数:filter
map
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())