第3课 Scala函数式编程彻底精通及Spark源码阅读笔记
2016-01-04 21:22
477 查看
本课内容:
1:scala中函数式编程彻底详解
2:Spark源码中的scala函数式编程
3:案例和作业
函数式编程开始:
def fun1(name: String){
println(name)
}
//将函数名赋值给一个变量,那么这个变量就是一个函数了。
val fun1_v = fun1_
访问 fun1_v("Scala")
结果:Scala
匿名函数:参数名称用 => 指向函数体
val fun2=(content: String) => println(content)
fun2
高级函数:
一:函数的参数也是函数,如下
def bigData(func: (String) =>Unit,content: String){ //输入参数是String,返回的类型是unit
func(content)
}
bigData(fun1_v,"Spark")
//结果 Spark
二:函数的返回值也是函数
def func_Returned(content: String) = (message: String) => println(content + " "+message)
val returned =func_Returned("Spark")
returned("Scala")
结果:Spark Scala
三:数组中的高级函数
array.map(2*_)
四:函数闭包 函数超出了作用域之后,依然可以访问
def scala(content: String) = (message: String) => println(content + ":" + message)
val funcResult=scala("Spark")
funcResult("Flink")
//结果 Spark : Flink
//柯里化 *****
def sum(x: Int,y: Int) = x+y
转为
def sum_Currying(x: Int) =(y: Int) = x+y
sum_Currying(1)(3)
//结果 4
作业:统计一个文件夹下面所有的单词出现的总次数(应用了函数式编程,集合的知识点)
object HelloScala {
def main(args: Array[String]) {
ScanParseAllFile()
}
def ScanParseAllFile() {
val arrBuffer = ArrayBuffer[String]()
var i = 0;
val files = (new File("D:/wangs/lepus/src/com/huawei/lepus/activity/manager/ats")).listFiles()
for (file <- files) {
if (file.isFile()) {
val f = Source.fromFile(file)
for (line <- f.getLines()) {
//line.split("[,:.!\\s?*\\/-=+]()><")
for (key <- line.split('.')) {
i += 1;
arrBuffer += key;
}
}
}
for (fileName <- arrBuffer) {
println(fileName)
}
}
}
}
1:scala中函数式编程彻底详解
2:Spark源码中的scala函数式编程
3:案例和作业
函数式编程开始:
def fun1(name: String){
println(name)
}
//将函数名赋值给一个变量,那么这个变量就是一个函数了。
val fun1_v = fun1_
访问 fun1_v("Scala")
结果:Scala
匿名函数:参数名称用 => 指向函数体
val fun2=(content: String) => println(content)
fun2
高级函数:
一:函数的参数也是函数,如下
def bigData(func: (String) =>Unit,content: String){ //输入参数是String,返回的类型是unit
func(content)
}
bigData(fun1_v,"Spark")
//结果 Spark
二:函数的返回值也是函数
def func_Returned(content: String) = (message: String) => println(content + " "+message)
val returned =func_Returned("Spark")
returned("Scala")
结果:Spark Scala
三:数组中的高级函数
array.map(2*_)
四:函数闭包 函数超出了作用域之后,依然可以访问
def scala(content: String) = (message: String) => println(content + ":" + message)
val funcResult=scala("Spark")
funcResult("Flink")
//结果 Spark : Flink
//柯里化 *****
def sum(x: Int,y: Int) = x+y
转为
def sum_Currying(x: Int) =(y: Int) = x+y
sum_Currying(1)(3)
//结果 4
作业:统计一个文件夹下面所有的单词出现的总次数(应用了函数式编程,集合的知识点)
object HelloScala {
def main(args: Array[String]) {
ScanParseAllFile()
}
def ScanParseAllFile() {
val arrBuffer = ArrayBuffer[String]()
var i = 0;
val files = (new File("D:/wangs/lepus/src/com/huawei/lepus/activity/manager/ats")).listFiles()
for (file <- files) {
if (file.isFile()) {
val f = Source.fromFile(file)
for (line <- f.getLines()) {
//line.split("[,:.!\\s?*\\/-=+]()><")
for (key <- line.split('.')) {
i += 1;
arrBuffer += key;
}
}
}
for (fileName <- arrBuffer) {
println(fileName)
}
}
}
}
相关文章推荐
- java.util.ArrayList 源码
- C语言中static详解
- JAVA多线程机制之暂停、恢复和停止
- BZOJ 1974: [Sdoi2010]auction 代码拍卖会( dp )
- java.lang.Long源码
- java.util.Comparator接口小结
- Laravel学习总结二:基础内容(模板Blade和View)
- C# VS VB
- 《MyWord》完整源代码(原创) C++ Qt
- Java浅复制与深复制
- java中线程创建
- Java SE 第九讲---面向对象特征之封装1
- java一点浅薄的东西 分享2
- 更改eclipse的编辑器样式风格
- 【总结】C#中的数组
- gnuradio的Python应用中绘图
- python 代码片段20
- 第五章(使用对象) 编程题一
- python 代码片段19
- 【ThinkPHP3.2.3】学习ThinkPHP笔记:搭建环境(1)