?
照例先上一段代码
?
?
object TestScala3 { def main(args: Array[String]): Unit = { val tuple = (1, "two", "three", true) println(tuple._1) println(tuple._2) val array = Array(1, "two", "three", true) for (i <- 0 until array.length) { println(array(i)) } for (item <- array) println(item) val map = Map(1 -> "one", "two" -> 2, true -> "true") for ((k, v) <- map) println("key = " + k + ", value = " + v) for ((_, v) <- map) println("value = " + v) println(map.get(1)) println(map.get(3)) } }
?
?
第一个例子,我们创建了一个4个元素的tuple,并打印出它的前两个元素。tuple是一个元组,它可以包含若干个不同类型的元素(在Scala2.8之后,Array和List也支持不同类型的元素)。在取用tuple中的元素时,使用下划线加index的语法,但注意,与其他集合不同,tuple的index是从1开始的,实际上当你尝试写tuple._0时,会有得到编译错误“value _0 is not a member of (Int, String, String, Boolean)”, 并没有0这个下标。另外我们也从编译错误信息中看到,Scala具备类型推导的能力,它能够知道元组中的每个元素的类型。
?
在Java的函数中,如果我们想返回多个值,只能新建一个POJO去接,或者把返回值写入参数传入的引用中,非常麻烦,但在Scala中我们使用tuple就非常方便。
?
第二个例子,我们生命了一个Array,遍历并打印出Array中的每个元素。这里我们用到0until?N,在上篇中我们写过0 to N,他们的区别在于until是一个前闭后开的函数,并不包括N,而to包括。
?
第三个例子,map储存的是键值对,用->声明。遍历时,把map中的每个键值对赋值给一个两个元素的tuple,再将这个tuple的两个元素打印出来。如果我们只关心map中的key或者value,我们可以使用占位符(_)来替代不关心的元素。
原文:http://kane-xie.iteye.com/blog/2239797