【Scala】09 偏函数 PartialFunction
更像是策略函数
可拆分成一个部分,是若干个函数的组合
package cn
object HelloScala {
def main(args: Array[String]): Unit = {
// 偏函数 对输入参数进行强化检查
// 案例需求
val list : List[(String, Int)] = List(("a", 12), ("b", 35), ("c", 44), ("d", 55))
// map转换 key不变, value2倍
val newList = list.map(tuple => (tuple._1, tuple._2 * 2))
// 模式匹配对元组元素赋值实现功能
val newList2 = list.map(tuple => {
tuple match {
case (a, b) => (a, b * 2)
}
})
// 省略Lambda表达式写法 偏函数
val newList3 = list.map{
case (a, b) => (a, b * 2)
}
println(newList)
println(newList2)
println(newList3)
// 偏函数
val positiveAbs : PartialFunction[Int, Int] = {
case a if a > 0 => a
}
val negativeAbs : PartialFunction[Int, Int] = {
case a if a < 0 => -a
}
val zeroAbs : PartialFunction[Int, Int] = {
case 0 => 0
}
// 声明
def abs(x : Int) : Int = (positiveAbs orElse negativeAbs orElse zeroAbs)(x)
}
}
【Scala】09 偏函数 PartialFunction的更多相关文章
- Scala之偏函数Partial Function
https://blog.csdn.net/bluishglc/article/details/50995939 从使用case语句构造匿名函数谈起在Scala里,我们可以使用case语句来创建一个匿 ...
- Scala教程之:PartialFunction
Scala中有一个很有用的traits叫PartialFunction,我看了下别人的翻译叫做偏函数,但是我觉得部分函数更加确切. 那么PartialFunction是做什么用的呢?简单点说Parti ...
- Scala 偏函数
如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...
- learning scala PartialFunction
Partial函数的定义 scala> val isVeryTasty: PartialFunction[String, String] = { case "Glazed Donut& ...
- Effective Scala
Effective Scala Marius Eriksen, Twitter Inc.marius@twitter.com (@marius)[translated by hongjiang(@ho ...
- scala学习笔记(四)样本类与模式匹配
访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该 ...
- Scala-Partial Functions(偏函数)
如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...
- 大数据系列修炼-Scala课程06
关于Scala中的正则表达式与模式匹配结合的正则表达式Reg 正则表达式的实现:正则表达式的定义与其它语言差不多,只需在表达式后加一个.r,并且可以遍历相应的表达式进行匹配 //定义的正则表达式 va ...
- Scala详解
1 快速入门... 4 1.1 分号... 4 1.2 常变量声明... 4 1.2.1 val常量... 4 1.2.2 ...
- scala 基础语法
文章内容全部来自:http://twitter.github.io/scala_school/zh_cn/index.html 表达式 scala> 1 + 1 res0: Int = 2 值 ...
随机推荐
- 逻辑卷缩容报错 xfs_growfs: /dev/new/new_box is not a mounted XFS filesystem
[root@server ~]# xfs_growfs /dev/new/new_box xfs_growfs: /dev/new/new_box is not a mounted XFS files ...
- Linux扩展篇-shell编程(五)-流程控制(一)-if语句
基本语法: (1)单分支 if [ condition ];then statement(s) fi 或 if [ condition ] then statement(s) fi (2)多分支 if ...
- GO语言 GOLANG 上传微信电子小票图片
GO语言 GOLANG 上传微信电子小票图片.GO HTTP POST 图片文件.GO 上传图片文件.multipart/form-data.image/jpeg.image/png. GO 环境: ...
- java8 API 函数式接口
简介 14年,Oracle公司如期发布了Java 8正式版,Java8提供了强大的流式处理及函数式接口编程 函数式接口编程,相信很多人在javascript中都使用过,比如回调函数,如今Java8也吸 ...
- 09-CentOS软件包管理
简介 CentOS7使用rpm和yum来管理软件包. CentOS 8附带YUM包管理器v4.0.4版本,该版本现在使用DNF (Dandified YUM)技术作为后端.DNF是新一代的YUM,新的 ...
- Linux开机启动三种方式
有的时候,我们开机启动一些命令或者是一段脚本,又或者是开机启动自定义的服务. 下面归纳了2种实现的方式. 方式1-开机启动命令 vim /etc/rc.local #添加你想执行的命令 chmod + ...
- 3款C#开源且实用的工具类库,工作效率提升利器!
前言 在日常工作开发中工具类库是软件开发中不可或缺的一部分,它们通过提供代码重用.通用功能.隐藏复杂性.提高代码质量.扩展性等方面的优势,帮助开发者更高效.更稳定地构建软件应用程序.今天大姚给大家分享 ...
- SpringBoot AOP完美记录用户操作日志,附源码
记录内容 接口名称 浏览器名称 操作系统 请求ip 接口入参.出参 接口耗时 .... 表结构 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -- ...
- C# 线程与进程
一.前台线程与后台线程对象 为什么要用多线程? 1.让计算机"同时"做多件事情,节约时间. 2.多线程可以让一个程序"同时"处理多个事情. 3.后台运行程序,提 ...
- yb课堂 ECMAScript 6常见语法快速入门 《三十一》
什么是ES 6 ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015).它的目标是使用JavaScri ...