Scala

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

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

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

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

Scala 专题教程-Case Class和模式匹配(10): 模式无处不在

jerry Scala
Scala程序很多地方都可以使用模式,而不仅仅用在模式匹配(match表达式),本篇给出几种使用模式的情况。变量定义 任何时候你使用val或var定义变量时,你都可以使用模式定义多个变量,此时你定义元组,分别赋值到不同

Scala 专题教程-Extractors(1):分解Email地址的例子

jerry Scala
前面我们介绍了使用模式匹配来分解数据,本专题教程对这些概念加以推广。到目前为止,构造器模式是和Case Class关联在一起的。有些时候你希望使用类似的模式而不需要创建Case Class。实际上你可能希望创建自定义的模

Scala 专题教程-Extractors(2):定义 Extractor

jerry Scala
在Scala中Extractor为定义了unapply方法的对象。unapply的作用是匹配一个值,然后从中提取所需的部分。通常unapply和apply一起定义,但这不是必须的。例如,前面定义上篇文章中所需的Email对象。 object EMail {

Scala 专题教程-Extractors(3):无参数和带一个参数的模式定义

jerry Scala
前面例子中的unapply方法在匹配成功时返回一个二元组。这可以很容易的推广到多于两个变量的情况。为了绑定N个变量,unapply方法可以返回一个N元祖,封装在Some中。 对于一个只绑定一个变量的情况有些特殊。Scala没有

Scala 专题教程-Extractors(4): 可变参数的Extractors

jerry Scala
前面的几个例子中Extractor返回的结果的数目都是固定的,比如EMail返回两个:用户名和域名。有些时候,这显得有些不够灵活。比如你打算匹配一个域名,而返回的部分为域名的各个部分,你可能会写如下的模式: dom m

Scala 专题教程-Extractors(5): Extractors和Seq 模式

jerry Scala
我们在前面介绍模式匹配介绍了可以使用如下的方式访问列表的元素: List() List(x,y,_*) Array(x,0,0,_) 实际上,这些序列模式内部实现都是使用Extractor来定义的。 比如Scala标准库的List的定义具有下面的定

Scala 专题教程-Extractors(6): 正规表达式

jerry Scala
Extractor一个特别有用的应用是正规表达式,Scala支持正规表达式,尤其是和Extractor配合使用时显得非常便利。生成正规表达式 Scala继承了Java的正规表达式的语法规则。这里我们假定你了解正规表达式。Scala的正规表

Scala 专题教程-隐式变换和隐式参数(1):概述

jerry Scala
应用中自己写的代码和调用的第三方函数库有着一个基本的区别:也就是你可以任意修改和扩展自己写的代码,而一般来说在没有源码的情况下很难扩展第三方函数库,只能利用函数库提供什么就是什么。 C#3.0支持静态扩展方