scalabook
69 строк · 2.2 Кб
Диапазон (Range)
Range
часто используется для заполнения структур данных и для циклов for
.
Эти примеры демонстрируют, как создавать диапазоны:
1 to 5// res0: Inclusive = Range(1, 2, 3, 4, 5)1 until 5// res1: Range = Range(1, 2, 3, 4)1 to 10 by 2// res2: Range = Range(1, 3, 5, 7, 9)'a' to 'c'// res3: Inclusive[Char] = NumericRange('a', 'b', 'c')
Range
можно использовать для заполнения коллекций:
val x = (1 to 5).toList// x: List[Int] = List(1, 2, 3, 4, 5)val y = (1 to 5).toBuffer// y: Buffer[Int] = ArrayBuffer(1, 2, 3, 4, 5)
Они также используются в циклах for
:
for i <- 1 to 3 do println(i)// 1// 2// 3
Во многих коллекциях есть метод range
:
Vector.range(1, 5)// res5: Vector[Int] = Vector(1, 2, 3, 4)List.range(1, 10, 2)// res6: List[Int] = List(1, 3, 5, 7, 9)Set.range(1, 10)// res7: Set[Int] = HashSet(5, 1, 6, 9, 2, 7, 3, 8, 4)
Диапазоны также полезны для создания тестовых коллекций:
val evens = (0 to 10 by 2).toList// evens: List[Int] = List(0, 2, 4, 6, 8, 10)val odds = (1 to 10 by 2).toList// odds: List[Int] = List(1, 3, 5, 7, 9)val doubles = (1 to 5).map(_ * 2.0)// doubles: IndexedSeq[Double] = Vector(2.0, 4.0, 6.0, 8.0, 10.0)val map = (1 to 3).map(e => (e, e.toString)).toMap// map: Map[Int, String] = Map(1 -> "1", 2 -> "2", 3 -> "3")
Ссылки: