`
lizhuang
  • 浏览: 889106 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Scala偏函数

 
阅读更多
被包在花括号内的一组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)


偏函数表达式必须位于编译器可推断出返回类型的上下文中。当你把它赋值给一个带有类型的变量,或者将它作为参数传递时,都符合这个要求。
分享到:
评论

相关推荐

    scala的偏函数

    偏函数 偏函数可以提供了简洁的语法,可以简化函数的定义。配合集合的函数式编程,可以让代码更加优雅。 定义 偏函数被包在花括号内没有match的一组case语句是一个偏函数 偏函数是PartialFunction[A, B]的一个实例 A...

    KinoMin#bigdata-learning-notes#scala部分应用函数与偏函数1

    一、部分应用函数 二、偏函数 一、部分应用函数 二、偏函数

    SCALA从入门到精通个人笔记含代码

    目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 ... 偏函数 高阶函数 闭包closure 柯里化函数 控制抽象 递归高级 Akka 介绍

    jacksu#utils4s#偏函数(PartialFunction)、偏应用函数(Partial Applied Functi

    scala中用scala.PartialFunction[-T, +S]类来表示scala可以通过模式匹配来定义偏函数, 下面这两种方式定义的函数, 都可以认为

    Scala程序设计(第2版)

    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...

    快学 scala 中文版 带完整目录

    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核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数...

    MyScala.rar

    Scala _02基础,Scala _03方法与函数,Scala _04Scala字符串,Scala _05集合_数组,Scala _07trait特性,Scala _08模式匹配match&偏函数,Scala _09样例类(case classes)&隐式转换,Scala _10Actor Model

    mobicents-dialogic-2.0.0.BETA1.zip

    scala-checking.zip,scala checking是另一个与有偏scala等价的函数。或者:ok/reason extends checked,complete with<*>。

    积分java源码-match-block:[ABANDONED]模式匹配块作为值

    中的偏函数 考虑以下 Scala 代码(直接从 REPL 会话粘贴): scala > def foo ( a : String , b : String ) = try { | a.toInt / b.toInt | } catch { | case ex : NumberFormatException => 'nfe | case ex : ...

Global site tag (gtag.js) - Google Analytics