scala笔记

函数字面量

字面量包括整形字面量、浮点数子面量、布尔型字面量、字符字面量、字符串字面量、符号字面量、函数字面量和元组字面量

除了函数字面量我们比较陌生以外,其他几种字面量都很容易理解
在这里插入图片描述

 val counter: Int => Int = {(value) => value + 1}

匿名函数

    val num1 = (num: Int) => num * 2println(num1(1))

闭包

  def main(args: Array[String]): Unit = {var more = 1val addMore = (x:Int) => x + moreprint(addMore(10))}

map操作和flatMap操作

  def main(args: Array[String]): Unit = {// map操作 flatMap操作val books = List("Hadoop","Hive","HDFS")print(books.map(s => s.toUpperCase) + "\n")println(books)// flatMap是map的一种扩展,在flatMap中,我们会传入一个函数,// 该函数的对每个输入都会返回一个集合(而不是一个元素)// 然后 flatMap把生成的多个集合 “拍扁”成为一个集合println(books.flatMap(s => s.toUpperCase)) //List(H, A, D, O, O, P, H, I, V, E, H, D, F, S)}

filter操作

    val university = Map("XMU"->"Xiamen University","THU"->"Tsinghua University")// filter操作可以实现过滤操作val universityOfXiamen = university.filter({kv => {println(kv);  // 这是一个mapkv._2 contains ("Xiamen") // 找到key中包含Xiamen的kv}})print(universityOfXiamen)

reduce操作

    // reduce 操作val list = List(1,2,3,4,5)val res1 = list.reduceLeft(_ + _) //从左往右// 1+2 = 3; 3+3 = 6; 6+4=10;10+5 =15val res2 = list.reduceRight(_ + _)println(res1)println(res2)

fold操作

    // fold操作val list = List(1,2,3,4,5)print(list.fold(10)(_*_))// 10*1 =10;10*2=20 .... 240*5 = 1200

函数式编程实例

package com.test.studyimport java.io.File
import scala.io.Sourceobject WordCount {def main(args: Array[String]): Unit = {val dirfile = new File("./test")val files = dirfile.listFiles()for (file <- files) println(file)val listFiles = files.toListval wordMap = scala.collection.mutable.Map[String,Int]()listFiles.foreach( file => Source.fromFile(file).getLines().foreach(line => line.split(" ").foreach(word => {if (wordMap.contains(word)) {wordMap(word) += 1} else {wordMap += (word -> 1)}})))for((key,value) <- wordMap) println(key+":"+value)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/276942.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

圆角边框, 盒子阴影 ,文字阴影知识总结

圆角边框 在 CSS3 中&#xff0c;新增了圆角边框样式&#xff0c;这样我们的盒子就可以变圆角了。 border-radius 属性用于设置元素的外边框圆角。 border-radius:length;  参数值可以为数值或百分比的形式  如果是正方形&#xff0c;想要设置为一个圆&#xff0c;把数值修…

前端js实现将异步封装成promise然后用async await转同步

&#xff08;一&#xff09;需求背景&#xff1a; 哈喽 大家好啊&#xff0c;今天遇到一个问题&#xff0c;需要将异步请求转换成同步 &#xff08;二&#xff09;相关代码&#xff1a; function getInfo() {return new Promise((resolve,reject)> {setTimeout(()> {re…

clang++: error: unknown argument: ‘-static-openmp‘

问题描述&#xff1a;clang: error: unknown argument: -static-openmp 在将YOLO部署在手机端时&#xff0c;出现了这个错误No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi 某些博客写的是使用低版本的NDK&#xff0c;比如20…

自动化测试(一)配置selenium环境(带图文,防止踩坑)

目录 配置selenium环境 1. 安装setuptools 2. 安装selenium 3. 安装驱动 如何查看谷歌浏览器版本 上一章讲述了如何安装python环境&#xff0c;那么&#xff0c;这一章讲述的是&#xff0c;如何配置自动化测试&#xff08;selenium&#xff09;环境~吧&#x1f937;‍♀️…

QT案例 使用WMI获取win_32类的属性值,包括Win32提供程序类中的属性

最近涉及到读取WINDOWS 系统电脑设备的各种信息&#xff0c;在一些特殊的PE或者简化系统中是没有WMI查询工具的&#xff0c;所以就自己写了个查询大部分WMI属性值的工具&#xff0c;免去了查网站的功夫。涉及到的方法内容就汇总做个总结。 PS:因为工作中软件基本都是我一个人开…

Kafka-客户端使用

理解Kafka正确使用方式 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&#xff0c;是企业开发过程中最常用的客户端API。 LowLevel API则需要客户端自己管理Kafka的运行细节&#xf…

Linux运维 网工应知必会 100 个知识点总结!

1&#xff09;什么是链接&#xff1f; 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2&#xff09;OSI 参考模型的层次是什么&#xff1f; 有 7 个 OSI 层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0…

系统安全-WAF入侵防御系统测评指标

WAF&#xff08;Web Application Firewall&#xff09;是一种部署在web应用程序前面的安全系统&#xff0c;其作用是在用户请求到达web服务器之前对用户请求进行扫描和过滤&#xff0c;分析并校验每个用户请求的网络包&#xff0c;确保每个用户请求有效且安全&#xff0c;对无效…

JS实现日历表

有需要的可以用一下&#xff0c;这是一个简单的demo. HTML&#xff1a; <table><thead><tr><th colspan"2"><span class"left"></span></th><th colspan"3"><span class"time"&g…

机器翻译:跨越语言边界的智能大使

导言 机器翻译作为人工智能领域的瑰宝&#xff0c;正在以前所未有的速度和精度&#xff0c;为全球沟通拓展新的可能性。本文将深入研究机器翻译的技术原理、应用场景以及对语言交流未来的影响。 1. 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的…

100ask imx6ull 驱动(设备树)装载步骤

1.修改设备树文件 路径&#xff1a; vim 100ask_imx6ull-sdk/Linux-4.9.88/arch/arm/boot/dts/100ask_imx6ull-14x14.dtb 2. 回到linux内核目录下&#xff0c;执行命令 /*路径&#xff1a;100ask_imx6ull-sdk/Linux-4.9.88*/ make dtbs 将生成的arch/arm/boot/dts/100ask_…