Scala集合:Range和Tuple
Range
Range定义一个范围,指定开始、结束和步长,通常用于填充数据结构和遍历for循环。
object RangeDemo { def main(args: Array[String]): Unit = { // 使用方法to来创建Range(包含上限) for(n <- 1 to 5){ println(n) } println("\n----------------------------") // 使用方法util来创建Range(不包含上限) for(n <- 1 until 5){ println(n) } println("\n----------------------------") // 还可以指定步长 for(n <- 1 to 21 by 4){ println(n) } println("\n----------------------------") for(n <- 1 until 21 by 4){ println(n) } println("\n----------------------------") for(n <- 'a' to 'c'){ println(n) } println("\n----------------------------") // 读取值 val r = 1 to 5 // val r = 1.to(5) // 等价 println(r(0),r(1),r(2),r(3),r(4)) println("\n----------------------------") // 使用Range创建一个连续序列 val x = (1 to 10).toList x.foreach(println) } }
Tuple
一个tuple(元组)是一个容器,用来存储两个或多个不同类型的元素。元组与List类似,大小和值不可变,它在创建以后不能被修改,但可以容纳不同数据类型。
可以通过两种方式创建元组:
- 通过编写由一对括号包围的、包含用逗号分开的值;
- 通过使用关系操作符(->);
例如:
val tuple = (1, false, "Scala") println(s"${tuple._1}, ${tuple._2}, ${tuple._3}") val tuple2 ="title" -> "Scala从入门到精通" println(s"${tuple2._1}, ${tuple2._2}")
元组在我们想要将一组不相关的元素组织在一起时很有用。如果这些元素是相同类型,可以使用集合,比如数组或列表。如果元素是不同类型,但是是相关的,在这种情况下,元组可能更合适。
元组是不可迭代的,其目的只是作为能容纳多个值的容器。但在一个元组中的元素有一个基于1 的索引,可以通过索引访问元组中的元素。
下面的代码演示了访问元组中元素的语法:
val twoElements = ("10", true); val threeElements = ("10", "harry", true); val first = threeElements._1 val second = threeElements._2 val third = threeElements._3
下面的示例代码演示了元组的使用:
// 元组:容器,可以容纳多个不同类型的元素,不可改变,不可以迭代 // 主要应用场景:作为数据容器,在函数中做为返回值,可以一次返回多个值 val t1 = ("aa",3,3.45,true,'c') // 获取其中的元素:基于1的位置索引 t1._1 t1._2 t1._3 t1._4 t1._5 println("----------") val (a,b,c,d,e) = t1 a b c d e