从输入看Scala理解

从输入看Scala理解,scala,Scala,我是Scala新手,从输入构建映射时遇到困难 我的问题是: 我正在获取电梯信息的输入。它由n条线组成,每条线都有升降器地板编号和地板上的升降器位置 例如: 0 5 1 3 4 5 这里我有三部电梯,第一部在0楼5号位置,第二部在1楼3号位置,等等 在Scala中有没有一种方法可以不使用var而将其放入映射中 到目前为止,我得到的是所有电梯信息的向量: val elevators = { for{i <- 0 until n j <- readLine spl

我是Scala新手,从输入构建映射时遇到困难

我的问题是:

我正在获取电梯信息的输入。它由n条线组成,每条线都有升降器地板编号和地板上的升降器位置

例如:

0 5
1 3
4 5
这里我有三部电梯,第一部在0楼5号位置,第二部在1楼3号位置,等等

在Scala中有没有一种方法可以不使用var而将其放入映射中

到目前为止,我得到的是所有电梯信息的向量:

val elevators = {
    for{i <- 0 until n
        j <- readLine split " "
    } yield j.toInt
}
我想澄清一下,我知道我可以编写Javaish代码,初始化一个映射,然后向它添加值,但我正试图尽可能接近函数编程

感谢您的帮助或意见

您可以:

val res: Map[Int, Int] = 
  Source.fromFile("myfile.txt")
        .getLines
        .map { line => 
          Array(floor, position) = line.split(' ')
          (floor.toInt -> position.toInt)
        }.toMap
你可以做:

val res: Map[Int, Int] = 
  Source.fromFile("myfile.txt")
        .getLines
        .map { line => 
          Array(floor, position) = line.split(' ')
          (floor.toInt -> position.toInt)
        }.toMap

如果文件以流的形式传递(在竞争编码中会发生):myscala.scalaSource.stdin.getLines如果文件作为流传递(在竞争编码中会发生这种情况):myscala.scalaSource.stdin.getLines