【问题标题】:Extract values from Array into Tuple将数组中的值提取到元组中
【发布时间】:2013-05-21 20:32:00
【问题描述】:

有没有一种简单的方法可以将列表的值提取到 Scala 中的元组中?

基本上是这样的

"15,8".split(",").map(_.toInt).mkTuple //(15, 8)

或者我可以做的其他方式

val (x, y) = "15,8".split(",").map(_.toInt)

【问题讨论】:

    标签: scala collections


    【解决方案1】:

    如果您将它们放在数组中,您可以在变量名前写上Array,如下所示:

    val Array(x, y) = "15,8".split(",").map(_.toInt)
    

    如果您有其他集合类型,只需替换为 Seq 或类似名称。

    它基本上就像幕后的extractor 一样工作。另请参阅此相关线程:scala zip list to tuple

    【讨论】:

    • 有没有办法直接创建tuple 结果而不创建两个变量xy? (我真的很喜欢内联解决方案)
    【解决方案2】:

    您可以尝试模式匹配:

    val (x, y) = "15,8".split(",") match {
      case Array(x: String, y: String) => (x.toInt, y.toInt)
      case _ => (0, 0) // default
    }
    

    【讨论】:

    • 我真的希望有一些不那么冗长的东西,按照我目前的做法更简单,即 var s = l.split(",").map(_. toInt) val (x, n) = (s(0), s(1)) 我只是希望用 's' 摆脱中间步骤
    • 通过模式匹配,如果您没有从 split 中获得两个字符串并且它没有引入不必要的 val,您可以轻松地返回一个备用值。
    • 仅作记录:case _ => (0, 0) 部分确实暗示了原始提问者根本没有询问的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多