近年来,JavaScipt 和 Java 都添加了改进的函数语法。Java 添加了箭头运算符和双冒号运算符。JavaScript 添加了箭头运算符。这些运算符旨在使定义和使用函数更容易,尤其是作为匿名函数内联。匿名函数是在没有给定引用变量的情况下定义和使用的函数。
函数式编程示例:集合
也许函数式编程最突出的例子是处理集合。这是因为能够跨集合中的项目应用功能块是纯函数思想的自然契合。
在 JavaScript 中使用 map() 和匿名函数
let letters = ["a", "b", "c"];
console.info( letters.map((x) => x.toUpperCase()) ); // outputs ["A", "B", "C"]
这种语法的美妙之处在于代码非常集中。不需要命令式管道,例如循环和数组操作。这段代码清楚地表达了正在做的事情的思考过程。
使用 Java 的箭头运算符可以实现相同的目的
在 Java 中使用 map() 和匿名函数
import java.util.*;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
//...
List lower = Arrays.asList("a","b","c");
System.out.println(lower.stream().map(s -> s.toUpperCase()).collect(toList())); // outputs ["A", "B", "C"]
使用 Java 8 的流库来执行大写字母列表的相同任务。请注意,核心箭头运算符语法实际上与 JavaScript 相同,它们做同样的事情,即创建一个接受参数、执行逻辑并返回值的函数。(重要的是要注意,如果这样定义的函数体周围缺少大括号,则自动给出返回值。)
继续 Java,考虑双冒号运算符。该运算符允许您引用类上的方法:在本例中,toUpperCase是 String 类上的方法。不同的语法适用于不同的场景。
// ...
List upper = lower.stream().map(String::toUpperCase).collect(toList());
在上面的所有三个示例中,您可以看到高阶函数在起作用。map()两种语言中的函数都接受函数作为参数。
换句话说,您可以将函数传递给其他函数(在 Array API 中或以其他方式)作为函数接口。提供者函数(使用参数函数)是通用逻辑的插件。
这看起来很像 OOP 中的策略模式(实际上,在 Java 中,在幕后生成了具有单个方法的接口),但是函数的紧凑性使得组件协议非常紧凑。
作为另一个示例,它在 Node.js 的 Express 框架中定义了一个路由处理程序。
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('One Love!');
});
函数式编程的一个很好的例子,因为它允许对映射路由和处理请求和响应所需的确切定义进行清晰的定义——尽管可能有人认为在函数体内操作响应对象是一种副作用.
React 中的柯里化函数
handleChange = field => e => {
e.preventDefault();
// Handle event
}
# Ending
**Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下,[点击这里即可解锁全部内容!](https://gitee.com/vip204888/java-p7)**
**如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!**(阿里对MySQL底层实现以及索引实现问的很多)
![]()
![]()
会为大家带来更多的技术类文章以及学习类文章!**(阿里对MySQL底层实现以及索引实现问的很多)
[外链图片转存中...(img-Oj24GxTH-1628398470374)]
[外链图片转存中...(img-BlHtwfIO-1628398470377)]
吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。