Scala 速通语法(十三)| 函数式编程
2021/11/8 17:39:47
本文主要是介绍Scala 速通语法(十三)| 函数式编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
函数式编程
偏函数 partial function
- 偏函数:对某个符合条件的,而不是所有情况进行逻辑操作时,使用偏函数
- 将包在大括号内的一组case语句封装为函数,我们称之为偏函数,她只会作用于指定类型的参数,或者指定范围值的参数实施计算,超出范围的值另行处理
- 偏函数在scala中是一个特质,PartialFunction
val list = List(1,2,3,4,"哈哈哈") /*** * 定义一个偏函数 * 1. 输入为Any 输出为Int * 2. isDefinedAt(x: Any) 判断条件是否成立 ture 则执行 apply(v1: Any) false 则不执行 * 3. apply(v1: Any) 对经过 isDefinedAt(x: Any) 过滤的值进行逻辑处理 v1为上函数 x */ val pf = new PartialFunction[Any,Int] { override def isDefinedAt(x: Any): Boolean = { x.isInstanceOf[Int] } override def apply(v1: Any): Int = { v1.asInstanceOf[Int]+1 } } //map不能传入偏函数 偏函数类型为对象 需要用collect println(list.collect(pf)) /** * 偏函数简写 */ def pf2 : PartialFunction[Any,Int] = { case i:Int => i + 1 case i>0 => i } println(list.collect(pf2))
匿名函数
- 可以通过函数表达式来设置匿名函数
//对匿名函数的说明 //1. 不需要写 def 函数名 //2. 不需要写返回类型,使用类型推导 //3. = 变成 => //4. 如果有多行,则使用{} 包括 val triple = (x: Double) => { println("x=" + x) 3 * x }
闭包(closure)
- 闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)
函数柯里化(curry)
- 函数编程中,接受多个参数的函数都可以转化为接受单个参数的函数,这个转化过程就叫柯里化
- 柯里化证明了函数只需要一个参数
//说明 def mul(x: Int, y: Int) = x * y println(mul(10, 10)) def mulCurry(x: Int) = (y: Int) => x * y println(mulCurry(10)(9)) def mulCurry2(x: Int)(y:Int) = x * y println(mulCurry2(10)(8))
这篇关于Scala 速通语法(十三)| 函数式编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享