- 浏览: 253748 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (298)
- 工作感悟 (6)
- java基础 (23)
- 计算机硬件知识 (1)
- 计算机网络知识 (2)
- Struts (3)
- Srping (4)
- hibernate (0)
- ibatis (0)
- webservice (4)
- Thread (22)
- maven (5)
- ubuntu/linux/centos/redhat (46)
- SSO (1)
- ESB (0)
- 工作流 (0)
- oracle (15)
- 云计算 (1)
- hadoop (1)
- nosql (0)
- mysql (3)
- sqlserver (0)
- jquery (0)
- 分布式 (3)
- 集群 (0)
- 设计模式 (2)
- EJB (0)
- map (0)
- cache (5)
- Niginx+varnish+squid+Ats (14)
- Apache (0)
- 工作/职业规划 (0)
- Scala & Groovy (1)
- English (4)
- 数据结构/算法 (6)
- 开发工具 (5)
- 测试 (2)
- Exception (0)
- 定时器 (3)
- j2ee (2)
- 部署 (1)
- Openssl (1)
- 操作系统 (3)
- kvm (13)
- libvirt (5)
- PostgreSql (5)
- 虚拟化 (3)
- 概念理解 (1)
- virt-manager (1)
- RESTful (3)
- 其它 (4)
- ssh2 (14)
- windows (1)
- 房产 (2)
- svn (1)
- 手机 (1)
- ant (1)
- flume (2)
- sqoop (1)
- fastdfs (5)
- log4j (1)
- SPDY (1)
- mongodb (2)
- MQ (2)
- Mina (1)
- dubbo (4)
- PMP (1)
- Webshpere (2)
- jvm (1)
- Btrace (1)
- zookeeper (7)
- UML (1)
- spring cloud (6)
- spring boot (5)
- storm (0)
- 软件管理 (1)
- elasticsearch (1)
- 协议 (2)
- docker (1)
- 性能 (2)
- 安全 (1)
- 代码规范 (1)
- mqtt (1)
- lombok (1)
- 车联网 (1)
- kafka (1)
最新评论
什么是闭包
闭包的概念,不同资料给出了好几种。
闭包:包含了自由(未绑定)变量的代码块,这些变量不是在这个代码块中或者任何全局上下文中定义的,而是定义代码块的环境中定义的。也就是下面两部分:
要执行的代码块(由于自由变量存在,相关变量引用没有释放)
为自由变量提供绑定的计算环境(作用域)
闭包:一种函数对象或者匿名函数,作为参数传递,可以动态的创建与返回
闭包:具有闭合作用域的匿名函数
第一层理解:闭包是具有特别作用域规则且可以作为参数的代码块
3.times {puts "Inside the times method."}
Results:
Inside the times method.
Inside the times method.
Inside the times method.
第二层理解:给上述的代码块扩展一个参数列表,使方法或函数可以与这个代码通讯
['lions', 'tigers', 'bears'].each {|item| puts item}
Results:
lions
tigers
bears
第三层理解:将这样的代码块作为参数传递
animals = ['lions', 'tigers', 'bears'].collect {|item| item.upcase}
puts animals.join(" and ") + " oh, my."
LIONS and TIGERS and BEARS oh, my.
第四层理解:定义代码块的环境的名称空间和使用它的函数之间的作用域本质上是一个作用域,即:作用域是闭合的
tax = 0.08
prices = [4.45, 6.34, 3.78]
tax_table = prices.collect {|price| {:price => price, :tax => price * tax}}
tax_table.collect {|item| puts "Price: #{item[:price]} Tax: #{item[:tax]}"}
Results:
Price: 4.45 Tax: 0.356
Price: 6.34 Tax: 0.5072
Price: 3.78 Tax: 0.3024
按照SCIP定义:闭包就是一个携带有本地状态的函数
我对闭包的理解
闭包具有函数的性质
能完成一定的功能的代码块
能够预定义参数和引用作用域中的参数
能够在需要的地方被调用
闭包可以看成对象
能够作为参数传递
作用域的作用
作用域设定一个运行空间,但是作用域本身也很无赖,作用域知道自己能干什么,但是不知道具体要怎么做。只要作用域真正要用的时候,见到了闭包里面的代码块,作用域才算功德圆满了。这就是所谓“动态”的一种体现吧
作用域决定了闭包中代码块的使用方法
作用域决定了闭包中预设参数的本质,如参数的个数,类型
疑问:还没有搞清楚一个问题,在这里请教一下知道的
在闭包里面作用域提供的参数 是怎么和闭包里面预设的参数一一对应起来的呢?见下面代码
printMapClosure = {| key, value| puts key + "=" + value }
[ "yue" : "wu", "lane" : "burks", "sudha" : "saseethiaseeleethialeselan" ].each(printMapClosure)
result:yue=wu
lane=burks
sudha=saseethiaseeleethialeselan
我想知道为什么 key就对应yue,lane,sudha呢?而value就会对应wu,burks,sasee...呢?
作用域决定了闭包的最终处理结果
总结:闭包是一种被作用域限制的函数对象
另附:未来Java可能会采用的两种闭包形式
BGGA方案
说明:扩展了类型系统,引入了 function 类型,即函数都带有一个类型参数列表、返回类型和 throws 子句。
代码:完成求平方和
sumOfSquares = mapReduce(myBigCollection,
{ Double x => x * x },
{ Double x, Double y => x + y });
CICE方案
说明:通过定义更简化的内部类来完成对闭包的支持
代码:完成求平方和
Double sumOfSquares = mapReduce(myBigCollection,
UnaryFunction<Double>(Double x) { return x*x; },
BinaryFunction<Double, Double>(Double x, Double y) { return x+y; });
闭包的概念,不同资料给出了好几种。
闭包:包含了自由(未绑定)变量的代码块,这些变量不是在这个代码块中或者任何全局上下文中定义的,而是定义代码块的环境中定义的。也就是下面两部分:
要执行的代码块(由于自由变量存在,相关变量引用没有释放)
为自由变量提供绑定的计算环境(作用域)
闭包:一种函数对象或者匿名函数,作为参数传递,可以动态的创建与返回
闭包:具有闭合作用域的匿名函数
第一层理解:闭包是具有特别作用域规则且可以作为参数的代码块
3.times {puts "Inside the times method."}
Results:
Inside the times method.
Inside the times method.
Inside the times method.
第二层理解:给上述的代码块扩展一个参数列表,使方法或函数可以与这个代码通讯
['lions', 'tigers', 'bears'].each {|item| puts item}
Results:
lions
tigers
bears
第三层理解:将这样的代码块作为参数传递
animals = ['lions', 'tigers', 'bears'].collect {|item| item.upcase}
puts animals.join(" and ") + " oh, my."
LIONS and TIGERS and BEARS oh, my.
第四层理解:定义代码块的环境的名称空间和使用它的函数之间的作用域本质上是一个作用域,即:作用域是闭合的
tax = 0.08
prices = [4.45, 6.34, 3.78]
tax_table = prices.collect {|price| {:price => price, :tax => price * tax}}
tax_table.collect {|item| puts "Price: #{item[:price]} Tax: #{item[:tax]}"}
Results:
Price: 4.45 Tax: 0.356
Price: 6.34 Tax: 0.5072
Price: 3.78 Tax: 0.3024
按照SCIP定义:闭包就是一个携带有本地状态的函数
我对闭包的理解
闭包具有函数的性质
能完成一定的功能的代码块
能够预定义参数和引用作用域中的参数
能够在需要的地方被调用
闭包可以看成对象
能够作为参数传递
作用域的作用
作用域设定一个运行空间,但是作用域本身也很无赖,作用域知道自己能干什么,但是不知道具体要怎么做。只要作用域真正要用的时候,见到了闭包里面的代码块,作用域才算功德圆满了。这就是所谓“动态”的一种体现吧
作用域决定了闭包中代码块的使用方法
作用域决定了闭包中预设参数的本质,如参数的个数,类型
疑问:还没有搞清楚一个问题,在这里请教一下知道的
在闭包里面作用域提供的参数 是怎么和闭包里面预设的参数一一对应起来的呢?见下面代码
printMapClosure = {| key, value| puts key + "=" + value }
[ "yue" : "wu", "lane" : "burks", "sudha" : "saseethiaseeleethialeselan" ].each(printMapClosure)
result:yue=wu
lane=burks
sudha=saseethiaseeleethialeselan
我想知道为什么 key就对应yue,lane,sudha呢?而value就会对应wu,burks,sasee...呢?
作用域决定了闭包的最终处理结果
总结:闭包是一种被作用域限制的函数对象
另附:未来Java可能会采用的两种闭包形式
BGGA方案
说明:扩展了类型系统,引入了 function 类型,即函数都带有一个类型参数列表、返回类型和 throws 子句。
代码:完成求平方和
sumOfSquares = mapReduce(myBigCollection,
{ Double x => x * x },
{ Double x, Double y => x + y });
CICE方案
说明:通过定义更简化的内部类来完成对闭包的支持
代码:完成求平方和
Double sumOfSquares = mapReduce(myBigCollection,
UnaryFunction<Double>(Double x) { return x*x; },
BinaryFunction<Double, Double>(Double x, Double y) { return x+y; });
发表评论
-
SequenceInputStream 合并流与切割流
2017-09-27 15:06 382将多个流合并成一个流 SequenceInputStrea ... -
java io 之管道(PipedOutputStream和PipedInputStream)的简介,源码分析和示例
2017-09-27 10:39 277java 管道介绍 在java中, ... -
Java通过Executors提供四种线程池
2017-09-27 10:21 443Java通过Executors提供四种线程池,分别为: new ... -
Java同步注解(Annotation)解释
2017-09-18 18:18 995JDK 5.0 以后增加了注解。就是@后面加一个名称。有其自身 ... -
url参数中出现+、空格、=、%、&、#等字符的解决办法
2017-03-08 15:31 382url出现了有+,空格,/,?,%,#,&,=等特殊符 ... -
Eclipse远程调试之Socket Attach与Socket Listen
2014-08-21 13:52 1649打个比方,被远程debug/监视 的进程就是一个风度翩翩的美少 ... -
关于java用jni调用 dll动态库Can't find dependent libraries错误的解决
2014-08-21 08:56 10931.package com.bsp.zauto.commo ... -
java 远程调试备忘
2013-12-11 16:45 847远程调试java程序 http://hi.baidu.com ... -
[转贴]System.getProperty()参数大全
2013-11-20 15:39 459一直做Web应用一般不会用到这些东西,今天在搞一个代码生成器的 ... -
Java Daemon线程
2013-09-05 13:27 599所谓守护线程就是运行 ... -
DelayQueue队列研究
2013-08-07 15:40 6461.DelayQueue 是一个无界的BlockingQue ... -
java 原语
2013-07-18 13:20 1160介绍 操作系统用语范畴 ... -
精巧好用的DelayQueue
2013-07-03 11:13 638我们谈一下实际的场景吧。我们在开发中,有如下场景 a) 关闭 ... -
log4j的配置文件备份.[成功测试]
2013-06-25 14:29 8991.在项目的config目录下,新建配置文件 log4j.xm ... -
log4j的xml配置详细
2013-06-24 13:48 586这是log4j默认的配置,我们先熟悉一下 <!-- ... -
java用log4j记录日志的基本方法
2013-06-24 10:57 564Log4j基本使用方法 Log4j由三个重要的组件构成: ... -
java 堆 栈
2013-06-21 16:53 563由String看Java堆栈问题,包括==以及equal()。 ... -
Java ThreadPoolExecutor思想介绍
2013-06-14 16:31 577一、简介 线程池类为 j ... -
JDK线程池的ThreadFactory
2013-06-14 16:10 773JDK线程池:Executors.newFixedThread ... -
java中的标签
2013-03-20 14:46 759Java中为了使程序结构更 ...
相关推荐
JSR-335 将闭包引入了 Java 。闭包在现在的很多流行的语言中都存在,例如 C++、C# 。闭包允许我 们创建函数指针,并把它们作为参数传递。在这篇文章中,将粗略的看一遍Java8的特性,并介绍 Lambda表达式。而且将试...
It is important in distributed computer systems to identify those events (at identifiable points in time) that are concurrent, or not related to each other in time. A group of concurrent events may ...
主要介绍了详解Java的闭包,作者从Lambda和默认方法等重要特性深入讲解,极力推荐!需要的朋友可以参考下
Java中的闭包与回调.rar
Java8 Java7 练手 类似于SessionTemplate
相信闭包和回调对每位学习Java的人来说都不陌生,那么今天小编和大家分享一篇关于Java内部类之间的闭包和回调,有需要的可以参考借鉴。
离散数学 闭包运算 传递闭包 自反闭包 对称闭包 warshell算法 普通算法 有界面 java编程
传递闭包的Warshall算法,java实现
什么是闭包?闭包的优缺点?
闭包是可以包含自由(未绑定)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境...支持闭包的多数语言都将函数作为第一级对象,是说这些函数可以存储到变量中、作为参数传递
主要介绍了Java中闭包简单代码示例,具有一定借鉴价值,需要的朋友可以参考下
递归Java 8 的递归闭包基于stackoverflow上的这个答案: : 包含一个简单的用法演示。 查看我的另一个函数式编程项目: : 博客条目: :
自己码的代码,R语言实现,
主要介绍了Java函数式编程(五):闭包,本文是系列文章的第5篇,其它篇章请参阅相关文章,需要的朋友可以参考下
一些人认为闭包带给编程语言的...尽管一些颇具竞争力的语言(如 C#)采纳了闭包,但Java社区至今仍抵制对它的使用。本文探讨闭包在为编程语言带来一点点便利的同时是否也带来不必要的复杂性、闭包还有无更多的益处。
闭包:函数内部可以调用函数外部的变量;反之,则不行 */ var r=10; function test1(){ var r2=”abc”; //alert(r) } //alert(r2);//不能访问的函数内部的r2 test1(); //嵌套的函数中也ok啦 function
这跟闭包本身没什么大的关系,也不知道怎么取标题,随便凑了个数,望见谅!今天一个刚学js的朋友给了我一段代码问为什么方法不执行,代码如下: 代码如下:function makefunc(x) { return function (){ return x;...
求属性集的闭包和求候选键的2个算法(JAVA实现).doc
什么是闭包? 闭包的特性 闭包的作用: 闭包的代码示例 注意事项 总结 闭包在javascript来说是比较重要的概念,平时工作中也是用的比较多的一项技术。下来对其进行一个小小的总结 什么是闭包? 官方说法: ...
学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种...