偏函数是只对函数定义域的一个子集进行定义的函数,并对这个子集的元素做相应的处理。
<br/>
偏函数由Scala的`trait PartialFunction[-A, +B]`实现,`A`为函数定义域,`B`为偏函数的返回值。
<br/>
常用核心方法:`isDefinedAt`和`apply`。
* `isDefinedAt`:用来告知调用方这个偏函数接受参数的范围,可以是类型也
可以是值;
* `apply`:用来描述对已接受的值如何处理;
```scala
// 自定义偏函数,需要new PartialFunction对象
val inc = new PartialFunction[Any, Int] {
override def isDefinedAt(x: Any): Boolean = {
// x 是不是Int类型
if (x.isInstanceOf[Int])
true
else
false
}
// asInstanceOf表示强制类型转换
override def apply(v1: Any): Int = v1.asInstanceOf[Int] + 1
}
// collect:遍历集合中的每个元素,并将每个元素交给偏函数处理
println(List(1, 2, 3, "four").collect(inc)) // List(2, 3, 4)
```
```scala
// case语句的偏函数
val pf: PartialFunction[Any, Int] = {
case x: Int => x + 1
}
println(List(1, 2, 3, "four").collect(pf)) // List(2, 3, 4)
```
- Scala是什么?
- Scala特性
- 开发环境搭建
- 环境搭建
- windows下的环境搭建
- IntelliJ IDEA环境搭建
- Scala关键字
- Hello, World
- 数据类型
- 数据类型
- 数据类型层次结构
- 字面量
- Null类型
- Nothing类型
- Unit类型
- 变量与常量
- type定义类型别名
- 字符串插值器
- 条件控制
- 循环控制
- 数组
- 元组
- 集合
- 集合分类
- List常用操作
- Set常用操作
- Map常用操作
- 函数
- 函数声明与调用
- 函数与方法的区别
- 函数注意事项
- 匿名函数
- 可变参数
- 高阶函数
- 中置表达式
- 函数嵌套
- 函数科里化
- 隐式参数
- 隐式函数
- 闭包
- 类和对象
- Java与Scala的比较
- 有关类与对象概念
- 类
- 类的定义和调用
- 类的继承
- 抽象类
- 单例对象
- 伴生对象和伴生类
- 特质
- 定义特质
- 混入特质
- 抽象类与特质的选择
- 自身类型
- 依赖注入
- this别名
- 样例类
- 枚举类
- 泛型类
- 包与包对象
- 模式匹配
- 基本语法
- 匹配模式
- 偏函数
- 注解
- 运算符
- 正则表达式
- 隐式类
- 异常处理
- 高级类型
- 结构类型
- 复合类型