加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 条件在map功能

发布时间:2020-12-16 19:01:34 所属栏目:安全 来源:网络整理
导读:在 Scala里有什么吗 condition ? first_expression : second_expression; 我可以在scala中使用map功能吗? 我想要写这样的东西: val statuses = tweets.map(status = status.isTruncate? //do nothing | status.getText()) 如果内联函数不可行,那么我如何在
在 Scala里有什么吗

condition ? first_expression : second_expression;

我可以在scala中使用map功能吗?
我想要写这样的东西:

val statuses = tweets.map(status => status.isTruncate? //do nothing | status.getText())

如果内联函数不可行,那么我如何在地图内写一个条件?

解决方法

那个?运算符,有时称为三进制运算符在Scala中不是必需的,因为它被定义为if-else表达式:

val x = if (condition) 1 else 2

要在map中使用,可以使用flatMap,然后在if-else的任一侧返回一个Option.由于Option可以隐式转换为Iterable,所以效果是列表被压缩,Nones被过滤:

val statuses = tweets.flatMap(status => if (status.isTruncate) None else Some(status.getText))

这相当于使用地图,然后平铺:

val statuses = tweets.map(status => if (status.isTruncate) None else Some(status.getText)).flatten

更惯用地,您可以使用collect,这允许您使用部分功能一步进行过滤和映射:

val statuses = tweets.collect {
    case status if !status.isTruncate => status.getText
}

您还可以使用过滤器和地图在两个步骤中执行此操作:

val statuses = tweets.filterNot(_.isTruncate).map(_.getText)

这里的缺点是这将遍历列表两次,这可能是不受欢迎的.如果您使用视图,则可以使用相同的逻辑,只能遍历列表一次:

val statuses = tweets.view.filterNot(_.isTruncate).map(_.getText)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读