Scala неизменные коллекции обеспечивают функции более высокого порядка , такие как map
, foldLeft
, groupBy
, et c., Которые производят новая трансформированная коллекция без изменения старой коллекции. Например, рассмотрим groupBy
, за которым следует values
objs // List[Obj]
.groupBy(_.y) // Map[Int,List[Obj]]
.values // Iterable[List[Obj]]
с учетом
case class Obj(x: Int, y: Int, s: String)
val objs =
List(
Obj(1, 1, "1.1"),
Obj(2, 1, "1.2"),
Obj(3, 1, "1.3"),
Obj(1, 2, "2.1"),
Obj(2, 2, "2.2"),
Obj(1, 3, "3.1"),
)
, который выдает
Iterable(
List(Obj(1,1,1.1), Obj(2,1,1.2), Obj(3,1,1.3)),
List(Obj(1,2,2.1), Obj(2,2,2.2)),
List(Obj(1,3,3.1))
)
Подумайте о прохождении через List
интерактивных упражнений и запросите на Scala канале Gitter о дружественном руководстве для начинающих в реальном времени.