博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala模式匹配
阅读量:7119 次
发布时间:2019-06-28

本文共 959 字,大约阅读时间需要 3 分钟。

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

匹配值

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

转载地址:http://lisel.baihongyu.com/

你可能感兴趣的文章