Scala函数值及Curry化是什么
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,Scala函数值及Curry化是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、函数值在Scala里,可以在函数里创建函数,将
千家信息网最后更新 2025年02月03日Scala函数值及Curry化是什么
Scala函数值及Curry化是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一、函数值
在Scala里,可以在函数里创建函数,将函数赋给引用,或者把它们当做参数传给其他函数。
示例1:
def totalResultOverRange(number:Int, codeBlok:Int => Int) : Int = { var result = 0 for(i <- 1 to number){ result += codeBlok(i) } result }
调用方法1:
var result = totalResultOverRange(10, i => (if(i % 2 == 0) i else 0)) println("result:"+ result)
调用方法2:
// 先定义一个函数值def codeFunc(i: Int): Int = { if(i % 2 == 0) i else 0 }
var result = totalResultOverRange(10, codeFunc)println("result:"+ result)
上面两种调用方法,结果为:
result:30
多参数示例:
def inject(arr: Array[Int], initial:Int, operation:(Int, Int) => Int) = { var carryOver = initial arr.foreach(i => carryOver = operation(carryOver, i)) carryOver }
调用1:
val array = Array(2,3,5,1,6,4)val sum = inject(array, 0, (carryOver,elem) => carryOver + elem)println("Sum of elements in array is " + sum )
结果1:
Sum of elements in array is 21
调用2:
val array = Array(2,3,5,1,6,4)val sum = inject(array, 0, (carryOver,elem) => Math.max(carryOver, elem))println("Max of elements in array is " + sum )
结果2:
Max of elements in array is 6
二、Curry化
Scala里的Curry化可以把函数从接收多个参数转换成多个参数列表。如果要用同样的一组实参多次调用一个函数,可以用curry化来减少噪音,让代码更有味道。
我们来看看Scala如何提供curry化的支持。我们要编写的方法不是接收一个参数列表,里面有多个参数,而是有多个参数列表,每个里面可以有一个或多个参数。
也就是说,写的不是def foo(a: Int, b: Int, c: Int){},而是 def foo(a: Int)(b: Int)(c: Int){}。可以这样调用这个方法,比如:foo(1)(2)(3)、foo(1){2}{3},甚至这样foo{1}{2}{3}。
示例:
def cusFoldLeft(arr:Array[Int], initial:Int)(operation:(Int,Int) => Int) = { var carryOver = initial arr.foreach(e => carryOver = operation(carryOver, e)) carryOver }
调用:
val array = Array(2,3,5,1,6,4)val max = cusFoldLeft(array, 0){ (carryOver, elem) => Math.max(carryOver, elem) } println("max:"+max)
结果:
max:6
关于Scala函数值及Curry化是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
函数
参数
方法
多个
结果
示例
问题
更多
而是
帮助
解答
易行
简单易行
也就是
也就是说
代码
内容
味道
噪音
小伙
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全防御体系的描述性语句
怎么查找不到表格中的数据库
拼多多的平台数据库在哪
网络安全虹膜识别
危害网络安全的两大
期刊数据库收录标准
leveldb 数据库
珠海来来网络技术有限公司好吗
五年一贯制网络技术
腾讯网站服务器管理
我的世界服务器神器
淮安app软件开发有哪些公司
远程服务器开启屏幕会话
魔兽世界代理服务器
军队网络安全如何防范
数通和网络安全是做什么的
怎么快速提升数据库的性能
对国家网络安全的建议4条
cmm是指导软件开发的一种面向
宁河软件开发生产商
喷码机软件开发
定制软件属于软件开发吗
vb数据库建表技术
适配体数据库
数据库第四章安全性
备份服务器sql数据库
我的世界服务器一键生成地图
守护网络安全板报
南邮 数据库技术与应用
首批西电网络安全学院