首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Scala学习札记_3 case语句与偏函数

2012-10-09 
Scala学习笔记_3 case语句与偏函数Scala通过case语句提供了形式简单、功能强大的模式匹配功能。但是也许你不

Scala学习笔记_3 case语句与偏函数
Scala通过case语句提供了形式简单、功能强大的模式匹配功能。但是也许你不知道,Scala还具有一个与case语句相关的语言特性,那就是:在Scala中,被“{}”包含的一系列case语句可以被看成是一个函数字面量,它可以被用在任何普通的函数字面量适用的地方,例如被当做参数传递。

new PartialFunction[List[Int], Int] {def apply(xs: List[Int]) = xs match {case x :: y :: _ => y}def isDefinedAt(xs: List[Int]) = xs match {case x :: y :: _ => truecase _ => false}}

这种转换是一种编译期行为,我们必须把second显式的声明为PartialFunction类型,如果没有给second指定类型,那么scala编译器会把后面的一组case语句编译成Function1类型,即完整的函数。

Tips:一组case语句要成为一个偏函数,那么它被赋予的变量必须被声明为PartionFunction[-A,+B]

那么我们什么时候该使用偏函数?或者说偏函数给我们带来了什么好处?当我们确定我们的程序不会被传入不可处理的值时,我们就可以使用偏函数。这样万一程序被传入了不应该被传入的值,程序自动抛出异常,而不需要我们手工编写代码去抛出异常,减少了我们的代码量。

热点排行