被包在花括号内的一组case语句是一个偏函数——一个并非对所有输入值都有定义的函数。
它是PartialFunction[A, B]类的一个实例。(A是参数类型, B是返回类型。)该类有两个方法:apply方法从匹配到的模式计算函数值,而isDefinedAt方法在输入到少匹配其中一个模式时返回true。
例如:
var f:PartialFunction[Char, INt] = {case '+' => 1; case '-'=>-1}
f('-')//调用f.apply('-'),返回-1
f.isDefinedAt('0') //false
f('0') //抛出MatchError
有一些方法接受PartialFunction作为参数。举例来说GenTraversable物质的collect方法将一个偏函数应用到所有在该偏函数有定义的元素,并日返回包含这些结果的序列。
"-3+4".collect { case '+' =>1, case '-'=> -1} //Vector(-1, 1)
偏函数表达式必须位于编译器可推断出返回类型的上下文中。当你把它赋值给一个带有类型的变量,或者将它作为参数传递时,都符合这个要求。
分享到:
相关推荐
偏函数 偏函数可以提供了简洁的语法,可以简化函数的定义。配合集合的函数式编程,可以让代码更加优雅。 定义 偏函数被包在花括号内没有match的一组case语句是一个偏函数 偏函数是PartialFunction[A, B]的一个实例 A...
一、部分应用函数 二、偏函数 一、部分应用函数 二、偏函数
目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 ... 偏函数 高阶函数 闭包closure 柯里化函数 控制抽象 递归高级 Akka 介绍
scala中用scala.PartialFunction[-T, +S]类来表示scala可以通过模式匹配来定义偏函数, 下面这两种方式定义的函数, 都可以认为
2.4 偏函数 32 2.5 方法声明 33 2.5.1 方法默认值和命名参数列表 33 2.5.2 方法具有多个参数列表 34 2.5.3 Future简介 35 2.5.4 嵌套方法的定义与递归 38 2.6 推断类型信息 40 2.7 保留字 44...
14.17 偏函数 L2 236 练习 238 第15章 注解 A2243 15.1 什么是注解 243 15.2 什么可以被注解 244 15.3 注解参数 245 15.4 注解实现 246 15.5 针对Java特性的注解 247 15.5.1 Java修饰符 247 15.5.2 标记...
二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数...
Scala _02基础,Scala _03方法与函数,Scala _04Scala字符串,Scala _05集合_数组,Scala _07trait特性,Scala _08模式匹配match&偏函数,Scala _09样例类(case classes)&隐式转换,Scala _10Actor Model
scala-checking.zip,scala checking是另一个与有偏scala等价的函数。或者:ok/reason extends checked,complete with<*>。
中的偏函数 考虑以下 Scala 代码(直接从 REPL 会话粘贴): scala > def foo ( a : String , b : String ) = try { | a.toInt / b.toInt | } catch { | case ex : NumberFormatException => 'nfe | case ex : ...