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提供了一些应对这种情况的有效工具。

  • 相关阅读:
    CSS之关于clearfix--清除浮动
    C#之垃圾回收
    C#缓存处理
    Asp.Net Mvc4 Ajax提交数据成功弹框后跳转页面
    Asp.Net MVC Ajax
    C#和SQL操作Xml
    领域模型
    Sql操作表字段
    水晶报表行之间切换颜色
    触发器-Trigger
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/5542642.html
Copyright © 2011-2022 走看看