偏函数的简写形式 | 学习笔记

简介: 快速学习偏函数的简写形式

开发者学堂课程【Scala 核心编程 - 进阶偏函数的简写形式学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9088


偏函数的简写形式


偏函数简化形式

声明偏函数,需要重新写特质中的方法,有的时候会略显麻烦,而 Scala 其实提供了简单的方法

1、简化形式1代码说明

//只需要声明传入参数的类型和返回参数的类型,直接写 case

def f2:PartialFunction[Any,Int]={

// case 怎样写取决于原先的代码逻辑,匹配上写 i+1,匹配不上不写任何代码,不会异常,在底层做优化

case i:Int=>i+1//case语句可以自动转换为偏函数

}

val list2 = List(1,2,3,4,"ABC").collect(f2)

// isDefinedAt 、 isInstanceOf 和 apply 业务量逻辑可以精简成一句话 case i:Int=>i+1,i 可以随便写如a、b

新建文件 PartialFun03 :

package com.atguigu.chapter13

object PartialFun03{

def main(args: Array[String]): Unit ={

//可以将前面的案例的偏函数简写

def partialFun2 :  PartialFunction[Any,Int]={

//简写成 case 语句

case i:Int =>i + 1

}

val list = List(1,2,3,4,”hello”)

val list2 = list.collect(partialFun2)

println(“list2=” + list2)

}

}

执行:

D:\program\jdk8\bin\java ...

list2=List(2,3,4,5)

Process finished with exit code 0

小数形式:

package com.atguigu.chapter13

object PartialFun03 {

def main(args:Array[String]):Unit={

//可以将前面的案例的俯函数简写

def partialFun2:PartialFunction[Any,Int]={

//简写成case 语句

case i:Int => i + 1

//只有 j * 2 不能转成 Int ,可以写 implicit 来转

case j:Double => (j * 2).toInt

}

val list = List(1, 2, 3, 4, 1.2, 2.4, "hello")

val list2=list.collect(partialFun2)

println("list2="+ list2)

}

}

效果:

D:\program\jdk8\bin\java ...

list2=List(2,3,4,5,2,4)

Process finished with exit code 0

//可以对不同的类型甚至更多的判断进行处理

2、简化形式2代码说明

val list3 = List(1,2,3,4,"ABC").collect{case i:Int=>i+1}

println(list3)

package com.atguigu.chapter13

object PartialFun03 {

def main(args:Array[String]):Unit={

//可以将前面的案例的俯函数简写

def partialFun2: PartialFunction[Any,Int]={

//简写成case 语句

case i:Int => i + 1

case j:Double => (j * 2).toInt

}val list = List(1, 2, 3, 4, 1.2, 2.4, "hello") val list2=list.collect(partialFun2) println("list2="+ list2)

//第二种简写形式

val list3 = list.collect{

case i:Int => i+1

case j:Double => (j*2).toInt

}

println(“list3=”+list3)//(2,3,4,5)

}

}

运行效果:

D:\program\jdk8\bin\java ...

list2=List(2,3,4,5,2,4)

list3=List(2,3,4,5)

Process finished with exit code 0

加入 1.9f:

package com.atguigu.chapter13

object PartialFun03 {

def main(args:Array[String]):Unit={

//可以将前面的案例的俯函数简写

def partialFun2: PartialFunction[Any,Int]={

//简写成case 语句

case i:Int => i + 1

case j:Double => (j * 2).toInt

}val list= List(1,2,3, 4, 1.2, 2.4, 1.9f,"hello") val list2=list.collect(partialFun2) println("list2="+ list2)

//第二种简写形式

val list3 = list.collect{

//偏函数的处理

case i:Int => i+1

case j:Double => (j*2).toInt

//最好换一个名字

case k:Float => (k*3).toInt

}

println(“list3=”+list3)//(2,3,4,5)

}

}

运行效果:

D:\program\jdk8\bin\java ...

list2=List(2,3,4,5,2,4)

list3=List(2,3,4,5,2,4,5)

Process finished with exit code 0

相关文章
|
2月前
|
Java 编译器 程序员
Lambda表达式的使用、简写与原理深入理解
Lambda表达式的使用、简写与原理深入理解
44 1
|
5月前
|
开发者 Python
Python函数参数定义中的这两个分隔符,还有人不知道吗?
python 函数的参数定义想必大家应该是非常熟悉的,有两种: • 位置参数(positional argument):根据函数在参数列表中的位置传递给函数的参数。 • 关键词参数(keyword argument):通过指定参数名称及其对应值传参的参数。
|
JavaScript 前端开发
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(三)
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(三)
|
JavaScript 前端开发 算法
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(六)
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(六)
|
存储 JavaScript 前端开发
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(四)
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(四)
|
JavaScript 前端开发
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(五)
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(五)
|
存储 JavaScript 前端开发
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(二)
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(二)
|
Web App开发 编解码 JavaScript
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)(一)
JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)
|
Python
【Python零基础入门篇 · 12】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
【Python零基础入门篇 · 12】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
152 0
【Python零基础入门篇 · 12】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
|
Python
【Python零基础入门篇 · 9】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
【Python零基础入门篇 · 9】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
119 0
【Python零基础入门篇 · 9】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate