scala - 如果列表不为空则返回尾部或返回空列表

标签 scala

从电子邮件列表中,我必须获得 2 个值:

  • 列表头部选项
  • 其余名单

  • 在 Scala 中对此进行编码的惯用方法是什么?到目前为止,我有:
    val primaryEmail = emails.headOption
    val conf = Map[String, Any](
      "email" -> primaryEmail,
      "additionalEmails" -> 
         primaryEmail.map(_ => emails.tail).getOrElse(List())
    )
    

    编辑:至于为什么有 Any : 我们使用GSON进行json序列化,内部将所有集合转换为java集合传递给jsonSerializationContext.serialize , 以 java.lang.Object 作为参数,所以 Any很适合我们。

    最佳答案

    我可能只是 drop第一个元素(如果您确定第一个元素始终是主要电子邮件)。像这样:

    val conf = Map[String, Any](
      "email" -> emails.headOption,
      "additionalEmails" -> emails.drop(1)
    )
    

    如果主要电子邮件不在列表中(列表为空),则不会出现异常。

    关于scala - 如果列表不为空则返回尾部或返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172547/

    相关文章:

    java - 如何使这种情况更像 Scala

    scala - 堆栈 - Scala 实现/性能问题

    java - 如何对类进行单元测试以检查它是否可以在 Set 或 Map 中使用(即 contains 始终有效)

    scala - 编译器似乎忽略类型细化中的类型绑定(bind)

    scala - 使用特殊格式压缩的 Spark 阅读

    json - Spark : Use JsonSchema to parse Json into DataFrame

    scala - 方法参数中多个连续的粗箭头在 Scala 中意味着什么?

    scala - 如何将嵌入的 Blazegraph 内容转储到 RDF 文件中?

    arrays - 为什么单位数组可以保留 null?

    java - 使用 Scala foreach 处理 CQEngine ResultSet 非常慢