package com.learn.scala
/**
* scala第八天
* Created by zhuqing on 2017/2/27.
*/
object Day8MapAndTuple {
def main(args: Array[String]): Unit = {
val map = Map("Robbie" -> 100, "Lizzy" -> 89, "Tom" -> 90);
for ((k, v) <- map) {
println("k=" + k, "v=" + v)
}
//scala中对Map的key,value值的遍历与Java类似
for (k <- map.keySet) {
println("k=" + k + "=>" + map.get(k).get)
}
for (v <- map.values) {
println("v=" + v)
}
/**
* 元组:不同类型值的聚集就是元组,Map的键值对就是最简单的元组,如上面的(String,Int).
* 这个是Java中没有的概念,如果真要用Java实现元组的功能,可以用Object类型的集合。
*/
val tuple = ("Robbie", "Math", 83)
//tuple取值时可以按照顺序号取
println(tuple._1 + ":" + tuple._2 + ":" + tuple._3)
//也可以使用模式匹配的方式获取
val (name, classname, score) = tuple;
println(name + ":" + classname + ":" + score)
//如果不是每个属性都需要可以使用下划线_为不使用的属性命名
val (enName, _, enScore) = tuple
println(enName + "=>" + enScore)
//元组可以用在函数返回多种返回值时,这种情况Java不好处理
val (secondName, age) = this.getNameAndAge();
println("scondName=" + secondName + ", age=" + age)
/**
* 拉链操作,将两个数组合并成一个对偶数组
*/
val names = Array("Robbie", "Tom", "Lizzy")
val ages = Array(22, 23, 21)
val newTupes = names.zip(ages)
for ((name, age) <- newTupes) {
println(name + "=>" + age)
}
}
/**
* 生成姓名和年龄的元组
*
* @return
*/
def getNameAndAge(): (String, Int) = {
("Tom", 23)
}
}