zoukankan      html  css  js  c++  java
  • scala模式匹配

    这是Scala中最有用的部分之一。

    匹配值

    val times = 1
    
    times match {
      case 1 => "one"
      case 2 => "two"
      case _ => "some other number"
    }
    

    使用守卫进行匹配

    times match {
      case i if i == 1 => "one"
      case i if i == 2 => "two"
      case _ => "some other number"
    }
    

    注意我们是怎样将值赋给变量’i’的。

    在最后一行指令中的_是一个通配符;它保证了我们可以处理所有的情况。
    否则当传进一个不能被匹配的数字的时候,你将获得一个运行时错误。我们以后会继续讨论这个话题的。

    参考 Effective Scala 对什么时候使用模式匹配模式匹配格式化的建议. A Tour of Scala 也描述了 模式匹配

    匹配类型

    你可以使用 match来分别处理不同类型的值。

    def bigger(o: Any): Any = {
      o match {
        case i: Int if i < 0 => i - 1
        case i: Int => i + 1
        case d: Double if d < 0.0 => d - 0.1
        case d: Double => d + 0.1
        case text: String => text + "s"
      }
    }
    

    匹配类成员

    还记得我们之前的计算器吗。

    让我们通过类型对它们进行分类。

    一开始会很痛苦。

    def calcType(calc: Calculator) = calc match {
      case _ if calc.brand == "hp" && calc.model == "20B" => "financial"
      case _ if calc.brand == "hp" && calc.model == "48G" => "scientific"
      case _ if calc.brand == "hp" && calc.model == "30B" => "business"
      case _ => "unknown"
    }
    

    (⊙o⊙)哦,太痛苦了。幸好Scala提供了一些应对这种情况的有效工具。

  • 相关阅读:
    树莓派搭建NAS之Seaflile
    Samba配置不同用户组不同用户的访问权限
    Samba-Linux权限理解
    Samba 共享配置
    服务端主动给客户端推送消息
    drf 权限认证
    drf-jwt分页器详解
    drf-jwt的过滤,筛选,排序,分页组件
    jwt token认证
    jwt
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/5542642.html
Copyright © 2011-2022 走看看