zoukankan      html  css  js  c++  java
  • scala (8) 模糊匹配

    object MatchDemo {
      /**
        * 定义偏函数用PartialFunction来表示
        * PartialFunction[T1,T2]要求传入一个参数T1,T2代表返回的类型。
        * 偏函数体中的case只会执行一个,如果匹配到了就不会继续往下匹配
        */
      val func: PartialFunction[String, Int] = {
        case "a" => 1
        case "b" => 2
        case _ => -1
      }
    
      /**
        * 匹配字符串
        */
      def m1(str: String) = str match {
        case "a" => 1
        case "b" => 2
        case _ => -1
      }
    
      /**
        * 匹配类型
        */
      def m2(x: Any) = x match {
        // 匹配字符串
        case x: String => println(x)
        // 带if守卫条件的匹配
        case x: Int if x > 5 => println(x)
        case _ => println("unknonw")
      }
    
      /**
        * 匹配数组
        */
      def m3(arr: Array[Int]) = arr match {
        case Array(1, x, y) => println("匹配以1开头,有三个元素的数组")
        case Array(0) => println("匹配只有0这个元素的数组")
        case Array(0, _*) => println("匹配以0开头,任意多个元素的数组")
        case _ => ("unknown")
      }
    
      /**
        * 匹配序列 List
        */
      def m4(list: List[Int]) = list match {
        case 5 :: Nil => println("匹配只有5这个元素的序列")
        case x :: y :: Nil => println("匹配只有两个元素的序列")
        case x :: tail => println("匹配任意多个元素的序列")
        case _ => println("unknown")
      }
    
      /**
        * 匹配元组
        */
      def m5(tuple: Any) = tuple match {
        case (x, z, 7) => println("匹配有三个元素并且以7结尾的元组")
        case (2, x, y) => println("匹配以2开头有三个元素的元组")
        case _ => println("unknown")
      }
    
      def main(args: Array[String]): Unit = {
        println(func("c"))
        println(m1("a"))
        m2(6)
        m3(Array(0, 1, 2, 3, 4, 5, 6))
        m4(List(5, 6, 7))
    
      }
    }
  • 相关阅读:
    获取Tekla属性方式
    基于C# 百度AI和科大汛飞语音合成SDK
    BIM工程信息管理系统-EF实体框架数据操作基类
    BIM工程信息管理新系统- 系统管理模块
    EChart绘制风速风向曲线分析图
    BIM工程信息管理系统-详细设计
    BIM工程信息管理系统搭建-系统功能需求
    基于C# 调用百度AI 人脸识别
    mago3DJS 应用
    Bitnami redmine windows环境下升级
  • 原文地址:https://www.cnblogs.com/mlfh1234/p/9247585.html
Copyright © 2011-2022 走看看