更像是策略函数

可拆分成一个部分,是若干个函数的组合

  1. package cn
  2.  
  3. object HelloScala {
  4. def main(args: Array[String]): Unit = {
  5. // 偏函数 对输入参数进行强化检查
  6.  
  7. // 案例需求
  8. val list : List[(String, Int)] = List(("a", 12), ("b", 35), ("c", 44), ("d", 55))
  9.  
  10. // map转换 key不变, value2倍
  11. val newList = list.map(tuple => (tuple._1, tuple._2 * 2))
  12.  
  13. // 模式匹配对元组元素赋值实现功能
  14. val newList2 = list.map(tuple => {
  15. tuple match {
  16. case (a, b) => (a, b * 2)
  17. }
  18. })
  19.  
  20. // 省略Lambda表达式写法 偏函数
  21. val newList3 = list.map{
  22. case (a, b) => (a, b * 2)
  23. }
  24.  
  25. println(newList)
  26. println(newList2)
  27. println(newList3)
  28.  
  29. // 偏函数
  30. val positiveAbs : PartialFunction[Int, Int] = {
  31. case a if a > 0 => a
  32. }
  33. val negativeAbs : PartialFunction[Int, Int] = {
  34. case a if a < 0 => -a
  35. }
  36. val zeroAbs : PartialFunction[Int, Int] = {
  37. case 0 => 0
  38. }
  39.  
  40. // 声明
  41. def abs(x : Int) : Int = (positiveAbs orElse negativeAbs orElse zeroAbs)(x)
  42.  
  43. }
  44. }

【Scala】09 偏函数 PartialFunction的更多相关文章

  1. Scala之偏函数Partial Function

    https://blog.csdn.net/bluishglc/article/details/50995939 从使用case语句构造匿名函数谈起在Scala里,我们可以使用case语句来创建一个匿 ...

  2. Scala教程之:PartialFunction

    Scala中有一个很有用的traits叫PartialFunction,我看了下别人的翻译叫做偏函数,但是我觉得部分函数更加确切. 那么PartialFunction是做什么用的呢?简单点说Parti ...

  3. Scala 偏函数

    如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...

  4. learning scala PartialFunction

    Partial函数的定义 scala> val isVeryTasty: PartialFunction[String, String] = { case "Glazed Donut& ...

  5. Effective Scala

    Effective Scala Marius Eriksen, Twitter Inc.marius@twitter.com (@marius)[translated by hongjiang(@ho ...

  6. scala学习笔记(四)样本类与模式匹配

    访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该 ...

  7. Scala-Partial Functions(偏函数)

    如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...

  8. 大数据系列修炼-Scala课程06

    关于Scala中的正则表达式与模式匹配结合的正则表达式Reg 正则表达式的实现:正则表达式的定义与其它语言差不多,只需在表达式后加一个.r,并且可以遍历相应的表达式进行匹配 //定义的正则表达式 va ...

  9. Scala详解

    1       快速入门... 4 1.1             分号... 4 1.2             常变量声明... 4 1.2.1         val常量... 4 1.2.2  ...

  10. scala 基础语法

    文章内容全部来自:http://twitter.github.io/scala_school/zh_cn/index.html 表达式 scala> 1 + 1 res0: Int = 2 值 ...

随机推荐

  1. GNU GCC学习

    1 Introduction 参考视频:1 GCC简介_哔哩哔哩_bilibili 参考书籍:<An Introduction to GCC (Brian J. Gough, Richard.p ...

  2. Go版RuoYi

    RuoYi-Go  https://github.com/Kun-GitHub/RuoYi-Go 1. 关于我 个人介绍 2. 介绍 后端用Go写的RuoYi权限管理系统 (功能正在持续实现)后端 G ...

  3. 什么是JDBC,在上面时候会用到它?

    JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库.JDBC接口及相关类在java.sql包和javax.sql包里.我们可以用 ...

  4. netcore 打包dll发布到nuget服务器

    可参考微软官网:NuGet.org 概述 | Microsoft Docs 一.创建类库 首先创建一个类库,就是你想要发布到nuget的类库,生成项目 二.下载并注册nuget nuget地址:htt ...

  5. output打印ElasticSearch搜索条件searchSourceBuilder对象 toString方法

    打印搜索条件:log.info(searchSourceBuilder.toString());log.info("es搜索条件:[{}]", searchSourceBuilde ...

  6. elasticsearch6.8 ik分词器需安装

    elasticsearch6.8  ik分词器需安装order_info_es/_analyze POST{ "analyzer": "ik_max_word" ...

  7. python 日志写入文件,参数说明及动态判断文件是创建还是追加

    import logging import os ''' 格式符 含义 %(levername)s 日志级别名称 %(pathname)s 当前执行程序的路径(即脚本所在的位置) %(filename ...

  8. 使用 Spring 实现控制反转和依赖注入

    使用 Spring 实现控制反转和依赖注入 概述 在本文中,我们将介绍IoC(控制反转)和DI(依赖注入)的概念,以及如何在Spring框架中实现它们. 什么是控制反转? 控制反转是软件工程中的一个原 ...

  9. OpenCV程序练习(一):图像基本操作

    展示一张图片 代码 import cv2 img=cv2.imread("demoimg.png") #读取图像 cv2.imshow("demoName",i ...

  10. Salt安装部署

    Salt安装部署 一:salt简介 ​ 早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护.系统管理员面临的问题主要是1.系统配置管理,2.远程执行命令,因此诞生了 ...