您的位置:首页 > 其它

第76讲:模式匹配下的赋值语句

2015-08-04 22:43 232 查看
赋值操作背后的模式匹配,赋值过程可能返回多个值,此时为了接受多个值,我们可能用tuple定义几个变量来处理。

实例代码,如下

//@是别名的意思,a@b形成了tuple2二元元组
//把1000赋值给a和b,并返回二元组的内容给val a@b
var a@b = 1000
println("a=" + a + ",b=" + b)

b = 2000   //修改b的值,发现a值没有变化
println("a=" + a + ",b=" + b)

a = 3000 //修改a的值,发现b值没有变化
println("a=" + a + ",b=" + b)

//总上,a@b可以理解为分别定义了a,b两个变量 ,赋值为1000

val (c,d)= (1000,2000) // 分别向c,d赋值为1000,2000
println("c=" + c + ",d=" + d)

//val (e,F) = (1000,2000) //编译报错,编译器会把F当作常量的模式进行匹配,
//如果没有定义F就会报错,所以匹配时通常为小写
val Array(g,h) = Array(110,200)

object Test {val 1 = 1 }
object Test2 {val 2 = 3 }


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)
//通过类型进行匹配


运行结果为:

a=1000,b=1000

a=1000,b=2000

a=3000,b=2000

c=1000,d=2000

参考资料

百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0

微信号:18610086859

DT大数据微信公众账号:DT_Spark

DT大数据梦工厂交流群:462923555/418110145/437123764
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: