zoukankan      html  css  js  c++  java
  • 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.样例类

  • 相关阅读:
    Docker容器操作
    Docker的镜像操作
    CentOs安装Docker
    超长字符串
    编程之美-2.11 扩展 寻找距离最远的两个点
    编程之美-2.8 找到符合条件的整数
    编程之美-2.4 1的数目
    编程之美-1.16 24点游戏
    logistic回归 c++ 实现
    朴素贝页斯分类法 c++实现
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/6898637.html
Copyright © 2011-2022 走看看