箭头函数为啥这么流行?从 JavaScript 到 Java

2017-03-22 13:27:43 +08:00
 Cbdy

今天中午的时候有人给我一段 JavaScript 代码,问我为什么等于 12 ,如下所示

const pipeline = (...funcs) =>
  val => funcs.reduce((a, b) => b(a), val)

const plus1 = a => a + 1
const mult2 = a => a * 2
const addThenMult = pipeline(plus1, mult2)

let r = addThenMult(5)

他可能对箭头函数不太熟悉,于是我让他把箭头换成 function ,他立刻就懂了。然后我表示现在很多语言用箭头表示一个可以计算的代码块, Java 也可以,然后我真的尝试用 Java 写了一下

Function<Stream<Function<Integer, Integer>>, Function<Integer, Integer>>
  pipline = funcs -> val -> funcs.reduce((a, b) -> b.compose(a)).get().apply(val);

Function<Integer, Integer> plus1 = a -> a + 1;
Function<Integer, Integer> mult2 = a -> a * 2;
Function<Integer, Integer> addThenMult = pipline.apply(Stream.of(plus1, mult2));

Integer r = addThenMult.apply(5);

结果是写出来几乎没什么差别,相比 Java7 的时候的匿名内部类,这应该算是很大的进步了。我想这应该就是 Google 放弃 Jack 改用 Javac 的原因吧,不知道现在用 Java8 的厂多不多

6551 次点击
所在节点    JavaScript
21 条回复
q397064399
2017-03-23 21:00:11 +08:00
语法糖而已, java 这种 自带各种超级牛逼的编辑器的玩意,匿名类跟 Lamada 区别不大,我是坚持不用 lamada

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX