2016-11-29 3 views
2

Итак, iv'e сделано около часа поисков не может найти реалистичные способы, чтобы список кортежей INTS IE val e = List((5,10),(10,13),(30,37)) И без использования измененного списка, я хочу создать новый список, основанный на старой ... однако в этом новом списке вместо кортежей я хочу, чтобы все целые числа находились между двумя значениями. I.E Выше LIST в =>List(6,7,8,9,11,12,31,32,33,34,35,36)Список [(Int, Int)] В списке [Int] - Ищу Advice

Любая помощь была бы принята с благодарностью.

TL: DR Список наборов [Int, Int] в новый список значений между двумя в ints нераспакован.

+0

http://www.scala-lang.org/api/current/ scala/collection/immutable/List.html – Pavel

ответ

8
scala> val e = List((5,10),(10,13),(30,37)) 
e: List[(Int, Int)] = List((5,10), (10,13), (30,37)) 

scala> e.flatMap(t => t._1+1 until t._2) 
res1: List[Int] = List(6, 7, 8, 9, 11, 12, 31, 32, 33, 34, 35, 36) 
+0

Большое спасибо человеку. работал. – Gizmox

+0

последнее, что, если бы я хотел вернуть все числа между +, сам номер IE (5,10) был бы 5,6,7,8,9,10 не только 6,7,8,9 – Gizmox

+0

'e. flatMap (t => t._1 to t._2) ' –

4

Вы можете создать Range с помощью until для каждой пары в последовательности ввода и использовать flatMap, чтобы объединить их:

e.flatMap { case (le, ue) => (le + 1).until(ue) } 
Смежные вопросы