代码之家  ›  专栏  ›  技术社区  ›  Lisan Al Gaib

使用平面图设置增量

  •  -4
  • Lisan Al Gaib  · 技术社区  · 6 年前

    我有一个可重复的集合,并从输入中为其赋值

    var set = scala.collection.mutable.Set[Int]() set ++= (in.readLine().split(" ").map(_.toInt))

    输入:
    15岁

    实际产量:
    1,5

    所需输出:
    1,2,3,4,5

    如果使用了带条件的平面图,但得到了错误。如何用平面图实现这一点

    2 回复  |  直到 6 年前
        1
  •  0
  •   pme    6 年前

    我假设您总是有一个像“2 5”这样的字符串作为输入:

    解决方案可能如下:

    def toSeq(value: String): Seq[Int] = {
      value.split(" ")
      .map(_.toInt).toList match {
        case x1::x2::_ => x1 to x2
        case other => Nil// handle Exception
      }
    }
    println(toSeq("1 5").toList)
    

    请注意,输入未经验证!

        2
  •  0
  •   Balaji Reddy    6 年前

    我的意见是,没有必要 flatMap 在这里操作。您可能收到编译器错误,说语法无效。但是如果我真的理解你的问题,我会继续给你答案。

        val in = "1 5"
        var set = scala.collection.mutable.Set[Int]()
        set.++=(in.split(" ").flatMap(value => Set(value.trim.toInt)))
    
       val range = set.head to set.last
       println( range.mkString(","))
    

    结果 1,2,3,4,5

    您可能已经注意到我所做的唯一更改是,返回 Set(_) . 的性质 平版地图 操作是,它将多个集合放在一个集合中,因此我将其作为 集(())

    我想最简单的选择是

        val in = "1 5"
        val split = in.split(" ")
        val range = split(0).trim.toInt to split(1).trim.toInt
        println(range.mkString(","))