Scala 柯里化、sortBy方法

embedded/2024/9/23 6:29:04/

Scala高级特性

小白的Scala学习笔记 2024/5/30 8:42

文章目录

  • Scala高级特性
    • 柯里化
      • sortBy方法

柯里化

参数可以写在两个括号里面

scala">object TestKeli {def add(a:Int)(b:Int)=a+bdef main(args: Array[String]): Unit = {val res = add(22)(33)println(res)}
}

可以填隐式参数,传一个默认值,调用的时候只需要传一个参数

scala">object TestKeli {implicit val c:Int=3//b给个默认值,调用的时候不需要传递,把参数变成隐式参数//当我们使用柯里化后,如果有参数是隐式的话,那么,Scala会自动上下文搜索对应的变量def add(a:Int)(implicit b:Int)=a+bdef main(args: Array[String]): Unit = {val res = add(22)println(res)}
}

sortBy方法

这个方法会生成一个排序好的List(这里是按sage升序排序的),不改变原List的顺序

sortBy方法,需要的Ordering类型的隐式参数

Ordering对象,能指导两个变量的大小

用隐式参数实现

scala">object TestSortBy {//Ordering对象,能指导两个变量的大小,通过下面的方法做减法,就能判断谁大谁小implicit val ord=new Ordering[Stu]()//sortBy方法,需要的Ordering类型的隐式参数{override def compare(x:Stu,y:Stu): Int =x.sage-y.sage//这里如果改成y.sage-x.sage,就能实现降序排序}case class Stu(snams:String,ssex:String,sage:Int)def main(args: Array[String]): Unit = {val list=List(Stu("zhangsan1","nan",21),Stu("zhangsan2","nan",22),Stu("zhangsan3","nan",29),Stu("zhangsan4","nan",12))//这个方法会生成一个排序好的List(这里是按sage升序排序的),不改变原List的顺序val res = list.sortBy(x => x)//sortBy 方法使用了柯里化,需要一个Ordering的隐式参数println(res)}
}

用隐式转换实现

scala">object TestSortBy {//用隐式转换实现implicit def toStu(stu: Stu)=new Ordered[Stu]() {override def compare(that: Stu): Int = that.sage-stu.sage}case class Stu(snams:String,ssex:String,sage:Int)def main(args: Array[String]): Unit = {val list=List(Stu("zhangsan1","nan",21),Stu("zhangsan2","nan",22),Stu("zhangsan3","nan",29),Stu("zhangsan4","nan",12))//这个方法会生成一个排序好的List(这里是按sage升序排序的),不改变原List的顺序val res = list.sortBy(x => x)//sortBy 方法使用了柯里化,需要一个Ordering的隐式参数println(res)}
}

http://www.ppmy.cn/embedded/45130.html

相关文章

word里面没有Acrobat选项

加载项被禁止,选择项里面,没有Acrobat选项 文件-》选项 加载项-》com加载项-》转到 添加Acrobat 出现Acrobat选项

如何在操作系统中合并 PDF 文件?不同系统有不同的方法

Windows 系统 在 Windows 系统中想要合并 PDF 文件我们可能需要借助一些第三方的软件或者浏览器的插件。 我们可以在 Google 浏览器中的 Chrome 应用商店中输入“Merge pdf”这样就可以搜索到在线合并 PDF 文件的插件,只需要下载到浏览器中就可以直接使用。当然 Ed…

oracle 11g安装补丁

cd /myweb/src mv /myweb/app/oracle/product/11.2.0/dbhome_1/OPatch /myweb/app/oracle/product/11.2.0/dbhome_1/OPatch.old unzip p6880880_112000_Linux-x86-64.zip mv OPatch O R A C L E H O M E e x p o r t P A T H = ORACLE_HOME export PATH=

曲线拟合工具软件(免费)

曲线拟合是数据处理中经常用到的数值方法,本质是使用某一个模型(方程或者方程组)将一系列离散的数据拟合成平滑的曲线或者曲面,数值求解出对应的函数参数,大家可以利用MATLAB的曲线拟合工具箱也可以使用第三方的拟合软件,今天我们介绍Welsim免费的曲线拟合软件 1、MATLA…

cleanmyMac有必要吗,什么软件可以替代clean my mac

最近总有苹果用户抱怨mac电脑变得非常卡顿,而且总会收到“您的启动磁盘几乎已经满了”的系统提示。提示出现的原因是我们长期未对电脑进行健康扫描和深度清理导致的。遇到这种情况,我们可以借助专业的电脑深度清理软件——CleanMyMac X,清理不…

Nginx 实战-03-nginx 负载均衡

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

k8s cephfs(动态pvc)

官方参考文档:GitHub - ceph/ceph-csi at v3.9.0 测试版本 Ceph Version Ceph CSI Version Container Orchestrator Name Version Tested v17.2.7 v3.9.0 Kubernetes v1.25.6 安装Ceph-csi Step 1 Download GitHub - ceph/ceph-csi at v3.9.0 rootsd-k8s…

电脑没电关机,wsl和docker又挂了,附解决过程

如题,开了个会没带笔记本电源,点啊弄关机后docker打不开,我以为是docker坏了,结果docker报错: An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or…