首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有更好的方法来匹配和解构我的元组,同时丢弃其余的呢?

有没有更好的方法来匹配和解构我的元组,同时丢弃其余的呢?
EN

Stack Overflow用户
提问于 2020-10-28 21:05:29
回答 1查看 38关注 0票数 0

我刚进入Scala几个星期,我发现它既令人愉快又令人畏惧。我正在尝试解构两个元组,超出空间分隔的4列文本文件。我想匹配(但不是保留)第一列,删除最后一列,同时保留中间的两列(文章,请求)。

代码语言:javascript
复制
  val filteredPairs = bufferedSource.getLines().toList map { line =>
    line.trim.split("\\s+").toList

    match {
      case List("en", article, requests, _) => (article, requests)
      case _ => None
    }
  } filter { m => m != None }

我也尝试过返回"case _ => ",在hashrocket和接收单元()之后没有任何输入。我一直在摆弄map和flatmap map,但在类型匹配方面遇到了问题。也许我需要一个选择,但我有一个最后期限,这两个解决方案对我都有效,所以我现在继续前进,但我想找到一个更优雅的解决方案。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-28 21:24:26

您可以使用类似于filter + mapcollect。正如我经常说的,是你的朋友。

(顺便说一句,您可以将toList转换移动到最后,以利用getLines__返回的迭代器)

代码语言:javascript
复制
val filteredPairs =
  bufferedSource
    .getLines()
    .map(line => line.trim.split("\\s+").toList)
    .collect {
      // If it has more than four columns, this won't match.
      case "en" :: article :: requests :: _ :: Nil => (article, requests)
    }.toList
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64573468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档