博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala实战高手****第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏...
阅读量:5172 次
发布时间:2019-06-13

本文共 1040 字,大约阅读时间需要 3 分钟。

/**

 * 函数式编程进阶:
 * 1、函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量
 * 2、函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,
 * 一般会把它赋值给变量,在Spark源码中大量存在
 * 3、函数可以作为参数直接传递给函数,极大的简化了编程代码,在Java中需要通过callback来实现
 * 这样的功能
 * 4、当函数的返回类型是函数的时候,这就表明Scala函数实现了闭包,Scala函数其实是类和对象,
 * 所以,Scala的参数都作为了对象的成员!!!
 * 5、Scala柯里化能很好的实现链式功能
 */

一:Scala函数编程进阶 1、函数赋值给变量     //把函数赋值给变量    val f = bigData _    f("Spark") //变量f其实也变成了函数   def bigData(name: String): Unit = {    println("Hi, " + name)   } 2、匿名函数定义     //匿名函数    val fun = (name: String) => println("Hi, " + name)    fun("Kafka") 3、将函数传递给方法     //将函数传递给方法    def getName(func: String => Unit, name: String) = func(name)    getName(fun, "Scala")     //map中其实也是个函数,map(item=>item*2)    Array(1 to 10: _*).map(_ * 2).foreach(println) 4、Currying定义     def funcResult(message: String) = (name: String) => println(message + ": " + name)    //funcResult("Java") //这样返回的是函数    funcResult("Hello")("Java") //Currying函数写法    //等同于    val result = funcResult("Hello")    result("Java")

  

转载于:https://www.cnblogs.com/sunrunzhi/p/9993355.html

你可能感兴趣的文章
Happy Great BG-卡精度
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>