gpt4 book ai didi

scala - map 功能中的条件

转载 作者:行者123 更新时间:2023-12-03 11:50:55 26 4
gpt4 key购买 nike

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

map 中使用它,您可以使用 flatMap然后返回一个 Optionif-else 的两侧.自 Option可以隐式转换为 Iterable ,效果就是列表被拉平了, Nones被过滤:
val statuses = tweets.flatMap(status => if (status.isTruncate) None else Some(status.getText))

这相当于使用 map然后 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 分两步完成此操作和 map :
val statuses = tweets.filterNot(_.isTruncate).map(_.getText)

这里的缺点是这将遍历列表两次,这可能是不可取的。如果您使用 view ,您可以使用相同的逻辑,并且只对列表进行一次迭代:
val statuses = tweets.view.filterNot(_.isTruncate).map(_.getText)

关于scala - map 功能中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com