`
鳄鱼旭
  • 浏览: 76439 次
文章分类
社区版块
存档分类
最新评论

关于Java8的Lamda表达式

 
阅读更多
最近几天看了函数式语言Lisp,对Java8的Lamda表达式有了进一步的理解。

首先,为什么叫做Lamda表达式呢?其实这个是函数式语言的叫法。函数式语言使用过程定义、以及过程定义的组合来完成需要的功能,可以这样讲:在函数式语言里面,过程定义和过程的组合是整个编程的主要内容。但是有些过程比较简单,为这些简单的东东定义一个过程比较啰嗦,所以引入了Lamda表达式这个语法。

如果给Lamda表达式起一个比较容易理解的名字,我认为应该叫做“匿名函数”:和函数的功能类似,但是没有名字而已。 不叫做匿名函数的原因是函数式语言的命名习惯而已。 因为函数式语言的基础是来源于lamda演算:http://en.wikipedia.org/wiki/Lambda_calculus。 这是函数式语言发展的基础。lamda演算和图灵机是等价的,内容比较复杂和难于理解,据我所知,可计算性领域会用到这些理论(反正我的智商暂时还无法理解这些东西)。

回到Java8,本质上还是将函数式语言的特性引入到对象式语言中来,但是我对此做法还是有些疑虑:
  1)对于函数式语言来说,函数本身是没有副作用的(函数执行的过程中只会对函数的局部变量产生影响),但是看Java8中的Lamda表达式其实并没有完全屏蔽函数的副作用(比如允许使用this来访问其他的函数等);
  2)由于函数式语言没有副作用,因此在多CPU的环境下可以提高并行(不是并发)度,但是在一般的对象式&过程式语言中是比较困难的(由于一般的过程执行期间可能会对非局部变量产生读写)。
基于以上2点,对官方文档提的提高并行度,我觉得只能是一定程度上的提高并行度(或者或提高比较困难,因为并不满足真正的函数式语言的特性),为什么不做的更彻底一些呢?
分享到:
评论

相关推荐

    学习Java 8【Lamda表达式开发】免费视频

    本课程主要针对于Java 8(JDK 1.8)的新特性Lamda表达式进行了全面讲解。讲解了java基于函数编程的语法,以及与Lamda表达式操作有关的内建接口、批处理、MapReduce数据分析汇总处理。

    java8lambda表达式Demo

    Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...

    Java系列JDK 1.8 新特性之 Lambda表达式.pdf

    Lambda表达式是Java 8中引入的一个重要新特性,它允许开发者以一种更加简洁的方式编写函数式接口实现代码。Lambda表达式本质上是一个匿名函数,能够作为一个参数传递给方法调用或存储在变量中,这使得Java支持了更高...

    lamda表达式 part3

    ### Java 8 Lambda 表达式之函数式接口详解 #### 一、引言 Java 8 的引入带来了一系列重大的变化,其中 Lambda 表达式作为最具革命性的特性之一,极大地简化了代码编写,提高了程序的可读性和可维护性。在前两篇...

    Java lambda 循环累加求和代码

    在 Java 8 中,Lambda 表达式可以与 Stream API 结合使用来实现循环累加求和操作。下面是一个简单的示例代码: ```java public void test() { List<Person> people = new ArrayList(); people.add(new Person(...

    lamda 优美表达式 可作为仿照的案例demo

    Lambda表达式是Java 8引入的一种新特性,它极大地简化了函数式编程,使得代码更加简洁、优雅。在本文中,我们将深入探讨Lambda表达式的概念、语法以及如何在实际编程中应用它们,以实现高效、易读的代码。 首先,...

    AS用lamda表达式制作一个简单的butoon事件

    lamda出来很久了最近老师说用lamda表达式来做一个Button的按钮事件,初略的将自己的做法和感想分享给大家 先说 AS 如何支持 Lambda 表达式 1.首先确定你的AndroidStudio中使用的是大于jdk1.8的版本 2、在项目的根...

    C++11新特性:Lambda表达式.pdf

    Lambda表达式是C++11新特性中的一种,全新的特性听起来很深奥,但却是很多其他语言早已提供(比如C#)或者即将提供(比如Java)的。Lambda表达式就是用于创建匿名函数的,GCC 4.5.x和Microsoft Visual Studio早已...

    Spring_SpEl表达式使用用例

    8. ** spel表达式在AOP中的应用** 在Spring AOP中,SpEL可用于定义切面的切入点表达式,如`execution(* com.example.service.*.*(..))`,匹配com.example.service包下所有类的所有方法。 9. **SpEL表达式在Bean...

    bcompare反编译java8新特性文件插件

    现有becompare3/4对于java8 新特性lamda表达式文件无法反编译进行数据比对,此插件可解决此问题。

    Idea快捷键(中文说明)

    Idea快捷键说明,官方的是英文版的,转成中文的,英文不好的朋友可以看看

    lamda-demo:Java8 lambda 表达式的示例

    Java 8 拉姆达 使用集合 使用字符串、比较器、过滤器(比较) 使用 lambda 表达式进行设计 递归优化(递归) 资源(资源) _* 参考源 1. Java 8 lambda 的强大功能 Java 8 示例

    Lambda表达式里面修改外部变量问题

    在Java 8中引入的Lambda表达式是一种简洁的匿名函数表示方式,它允许开发者以更紧凑的代码处理函数式编程任务。然而,在Lambda表达式中直接修改外部变量可能会导致编译错误,因为Java要求这些变量必须是final或...

    Java8新特性之Lambda表达式和Optional类

    Java 8 新特性之 Lambda 表达式和 Optional 类 Java 8 是 Java 语言的最新版本之一,它引入了许多新的特性,包括 Lambda 表达式和 Optional 类,这些特性极大地提高了 Java 语言的编程效率和可读性。下面我们将详细...

    Lamda-Practice:Java 8 lambda表达式和功能接口的实践

    通过深入学习和实践"Lamda-Practice"项目,你不仅能够掌握Java 8的Lambda表达式和功能接口,还能进一步理解函数式编程思想,提升你的Java编程能力。在实际工作中,这些技能可以帮助你编写更简洁、更易维护的代码。

    java8lamda:Java 8 Lambda功耗研究

    Java 8 Lambda表达式是Java语言的一次重大更新,它引入了函数式编程的概念,极大地简化了多线程和集合处理。Lambda表达式是Java 8中的一个核心特性,允许开发者以更简洁的方式定义匿名函数,这对于处理回调、事件...

    Java8 新特性之lamdba表达式和Optional

    1.1.7 Supplier接口 8 1.1.8 Predicate接口 9 1.3 方法引用和构造器 12 1.2.1 方法引用 12 1.2.2 构造器 12 1.4 Stream语法 13 1.3.1 入门案例 13 1.3.2 怎么得到Stream 15 1.3.3 转换Stream 16 1.3.4 汇聚Stream 19...

Global site tag (gtag.js) - Google Analytics