• scala 学习笔记--模式匹配


    1.switch

    java代码

    switch (cause) {
         case ‘2‘ : 
         dropTime=time;
         case ‘8’:case ‘9’ : 
         case ‘10’:case ‘11’ :
         p_X++; 
         break;
    
         default:
          break;
     }

    scala

    var tag=...
    tag match {
      case ‘a’ => //todo
      case 'b'=> //todo2
      case _ if(tag eq "c" or tag eq "d" ) => //todo3 //这是守卫
      case _ => //todo3 //类似default 默认
    }

    1.scala 和java的一个优化的地方是不需要在每个分支break。

    2.scala的守卫很方便,能少些代码

    注意这种匹配一定要给变量名,不能这样用

      case BigInt => //todo   

    注意,在所有匹配项都添加了右单引号。

    这是case语句的一种特性,如果在=>左侧看到了非大写的名字,就会创建一个局部变量,用来计算该模式匹配。

    如果用右单引号将名字括起来,那么就是告诉scala将该名字当做符号处理。

    3.for的模式匹配

    for((k,v) <- System.getProPerties()) 
    println(k+"->" +v)

    for((k,"") <- System.getProPerties())
    等效于
    for((k,v) <- System.getProPerties() if v =="" )//用守卫

     4.正则表达式的模式匹配

    5.样例类

  • 相关阅读:
    REHの个人主页
    多项式基础学习笔记(2)
    多项式基础学习笔记(1)
    FFT & NTT 学习笔记
    LCT学习笔记
    莫队学习笔记
    SAM 学习笔记
    网络流学习笔记
    关于魔术球贪心做法的证明
    【题解】异或粽子&加强版
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/6898637.html
Copyright © 2020-2023  润新知