For 循环中的模式匹配,可以过滤数据,数据处理方面使用。
for(i<-List(1,2,3,4,5)) println(i) //实际上调用的是foreach
for(index@"Flink" <- List("hadoop","spark","Flink")) println(index)//为参数起了个别名进行匹配
for((language,"hadoop") <- Set("scala"->"spark","java"->"hadoop")) println(language)//给一个参数初始化进行匹配
for((k,v:Int) <- List(("spark",5),("hadoop","bigdata"))) println(v) //通过类型进行匹配
运行结果为:
1
2
3
4
5
Flink
java
5
下面逐一进行分析。
第一个例子, for(i<-List(1,2,3,4,5)) println(i) 其实是foreach语句,代码如下:
@inline override final
def foreach[B](f: A => B) {
var these = this
while (!these.isEmpty) {
f(these.head)
these = these.tail
}
}
把List的所有变量 不加过滤的给 变量 i
第二个,for(index@”Flink” <- List(“hadoop”,”spark”,”Flink”)) println(index) ,就是匹配数据中含有 Flink 的数据,并将打印出来
第三个, for((language,”hadoop”) <- Set(“scala”->”spark”,”java”->”hadoop”)) ,匹配第2个元素为 hadoop的的key值
第四个, for((k,v:Int) <- List((“spark”,5),(“hadoop”,”bigdata”))) println(v) ,匹配第二个元素的数据类型为 Int的tuple,并将该tutple 的第一个元素打印出来
参考资料:
百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0
微信号:18610086859
DT大数据微信公众账号:DT_Spark
DT大数据梦工厂交流群:462923555/418110145/437123764