Scala

Scala 专题教程-Case Class和模式匹配(9): Option类型

jerry Scala
Scala语言中包含一个标准类型Option类型,代表可选值,Option类型的值可以有两个可能的值,一个为some(x) 其中x为有效值,另外一个为None对象,代表空值。 Option类型的值通常作为Scala集合类型(List,Map等)操作的

Scala 专题教程-Case Class和模式匹配(8): Sealed Classes

jerry Scala
前面说过,在写模式匹配时,你必须保证你所写的可选项覆盖了全部的可能性,因此常常你必须加上一个缺省通配符选项。但这种情况只适应于缺省通配符有意义的情况。如果对于一些没有缺省项的情况,你怎么才能保证你写的

Scala 专题教程-Case Class和模式匹配(7): 重叠模式定义

jerry Scala
Scala在匹配模式时,按照模式定义的顺序依次检查,因此越特定的规则越要先定义,而通用的规则后定义。比如我们修改之前的 def simplifyTop(expr :Expr) :Expr = expr match { case UnOp("-",UnOp("-",e))=&...
阅读全文

Scala 专题教程-Case Class和模式匹配(6): 模式限定修饰

jerry Scala
有些时候,需要对定义的模式做某些限制,比如你需要完成表达式简化,比如两个相同的参数相加 e+e ,你想把它简化为e*2. 也就是 BinOp("+",Var("x"),Var("x")) 转化为 BinOp("*",Var("x"),Number(2)) 你可能试

Scala 专题教程-Case Class和模式匹配(5): 模式的种类(四)

jerry Scala
变量绑定 除了独立的变量模式外,你还可以把一个变量添加到另外的模式中,你简单的定义一个变量,然后再添加一个@符号,然后再写其它的模式。 这就定义了一个变量绑定过的模式。这意味着还是按照标准的模式匹配来匹

Scala 专题教程-Case Class和模式匹配(4): 模式的种类(三)

jerry Scala
类型模式 你可以使用类型模式匹配来代替类型检查和类型转换。比如: def generalSize(x:Any) = x match{ case s:String => s.length case m:Map[_,_] =m.size case _ => -1 ...
阅读全文

Scala 专题教程-Case Class和模式匹配(3): 模式的种类(二)

jerry Scala
构造器模式 构造器模式功能非常强大,比如一个构造器模式可以定义为 BinOp(?+?,e,Number(0)). 它由一个名称BinOp(某个case class的名称)和一系列有括号分开的模式构成(“+”,e和Number(0)).这个模式首先检查输入

Scala 专题教程-Case Class和模式匹配(2): 模式的种类(一)

jerry Scala
上个例子显示了几种不同的模式:常量模式,通配模式,变量模式等,本篇逐个介绍模式的种类。通配模式 通配符“_” 可以用来匹配任意对象,通常在模式匹配中作为最后一个匹配项,匹配其它所有的输入对象。比如: ex

Scala 专题教程-Case Class和模式匹配(1):简单的示例

jerry Scala
本专题侧重介绍Scala的case class和pattern matching(模式匹配),这俩个两个程序结构对于处理树结构的数据非常有帮助。Scala的case class使得对对象进行模式匹配变得非常方便,简单的来说,Scala的case class就是

Scala Specs2 测试入门教程(7): Spec2 可选的Matcher (匹配运算)

jerry Scala
除了之前介绍的Spec2内置的Matcher, 针对不同的功能,Spec2还提供了一些可选的Matcher,比如:Result 如果你需要其它Matcher的结果: // you need to extend the ResultMatchers trait class Matche...
阅读全文