2016-03-16 2 views
0

Я новичок в Scala, и у меня возникают проблемы с построением Карты с входов.Scala понимание от ввода

Вот моя проблема:

Я получаю вход для информации лифтов. Он состоит из n линий, каждый из которых имеет номер ElevatorFloor номер и ElevatorPosition на этаже.

Пример:

0 5 
1 3 
4 5 

Так вот у меня есть 3 лифта, первый один на этаже 0 в положении 5, второй этаж на 1 позиция 3 и т.д ..

Есть ли способ в Scala положить его на карту без использования var?

Что я получаю до сих пор является вектором информации всех лифтов:

val elevators = { 
    for{i <- 0 until n 
     j <- readLine split " " 
    } yield j.toInt 
} 

Я хотел бы иметь возможность разделить строки в двух переменных „elevatorFloor“ и „elevatorPos“ и группа их в структура данных (моя догадка карта будет соответствующий выбор), я хотел бы получить что-то выглядит как:

elevators: SomeDataStructure[Int,Int] = (0->5, 1 -> 3, 4 -> 5) 

Я хотел бы уточнить, что я знаю, что я мог бы написать Javaish код, отформатируйте карту и затем добавить значения для него, но я стараюсь держаться как можно ближе к функциональному progr amming насколько возможно.

Спасибо за помощь и комментарии

ответ

5

Вы можете сделать:

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

Что делать, если файл передается в виде потока (в конкурентной кодировании происходит): myscala.scala Daniel

+0

Уверен: '' Source.stdin.getLines'' –

Смежные вопросы