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

赋值操作背后的模式匹配,赋值过程可能返回多个值,此时为了接受多个值,我们可能用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

你可能感兴趣的:(scala)