--再论闭包
--
下面这个例子 引自
《Groovy in action》
第五章。
一段 Java
代码,
interface ResourceUser {
void use(Resource resource)
}
resourceHandler.handle(new ResourceUser(){
public void use (Resource resource) {
resource.doSomething()
}
});
下面是一段等价 Groovy
的代码。
resourceHandler.handle { resource -> resource.doSomething() }
惊叹吧 ? 8行JAVA代码居然被 Groovy 如此 easy 地实现了。
惊叹! 惊叹之余再来反思。。。
(1),为何能如此简单(Groovy):因为它在使用闭包。
Groovy中
行为元素(函数,过程)作为一级元素。
像resource -> resource.doSomething() 就是一个匿名函数。
参数 为 resource,返回值 为 resource.doSomething()。
(2),为何如此复杂(Java):因为它在模拟闭包。
函数咱没有,那就包装一下,模拟一下,但好像臃肿了点。。
(3),易理解吗?
Groovy
:资源处理器
(名词:resourceHandler)处理
(动词:handle)一个函数
(匿名函数:resource ->
resource.doSomething())。
模拟闭包的Java
:资源处理器
(名词:resourceHandler)处理
(动词:handle)一个资源用户
(名词:new
ResourceUser(){...})。
资源处理器应该只处理资源啊。。。
(4),
重新造句
(Java)
OO的Java
:资源处理器
(名词:resourceHandler)处理
(动词:handle)一个资源
(名词:resource)。
new ResourceHandler(){
protected void handle(Resource resource){
//doSomething ....
resource.doSomething();
//doSomething ....
}
}.handle(request);
个人观点
:
一种功能如果可以用FP中的闭包来实现,
那它必然也可以用OO中的对象来实现,
而且更贴近于人的思维。
有必要用对象模拟闭包吗?个人感觉没必要,
用对象模拟的闭包 来实现一种功能,感觉相比上诉两种情况更复杂。
分享到:
相关推荐
综上所述,文章中的内容涉及到抽象代数、格论、范畴论等多个数学领域的知识,对于理解有限集合上的闭包系统、闭包算子以及有限原子格的表示提供了深刻的见解。这些概念在数学理论研究以及逻辑电路设计等领域有着广泛...
本文研究的目的是在完备剩余格上利用蕴涵运算定义蕴涵闭包算子,并给出其等价刻画和表示定理。 首先,让我们探讨闭包算子(Closure Operators)的基础知识。闭包算子是在偏序集中定义的一个映射,它满足增值性、保...
论文研究-基于网络闭包理论的交易型社区网络演化研究.pdf, 随着社会化商务时代的到来,交易型社区的发展越来越成为解决社会化商务中经济性与社会性矛盾的关键.但交易型...
闭包运算作为离散数学中的核心概念,广泛应用于图论、集合论、逻辑学等多个领域。在此,我们将深入探讨闭包运算的类型,以及如何通过算法实现它们。 1. **闭包运算**:闭包运算是一种在集合上定义的操作,它将一个...
基于对闭包运算的性质研究,引入了闭包算子空间及其之间的连续映射概念,证明了闭包算子空间(对象)及其之间的连续映射(态射)构成范畴(闭包算子范畴)。证明了闭包算子空间范畴中(有限)积和(有限)余积的存在...
在经典集合论中,闭包指的是包含给定集合的所有闭集的交集,而内部则是由包含于给定集合的所有开集的并集构成。在模糊逻辑和模糊集的背景下,这些概念需要扩展以适应连续性和隶属度的模糊特性。 在韩元良的研究中,...
传递闭包(Transitive Closure)是集合论中的一个概念,指的是在集合\(X\)上的一类特殊的二元关系。具体来说,如果在集合\(X\)上有一个二元关系\(R\),那么\(R\)的传递闭包是指包含\(R\)的、\(X\)上最小的传递关系。...
在一般拓扑学中,拓扑结构可以通过一系列基本概念来刻画,如邻域、内部、闭包以及滤子(网)的收敛等。这些概念的经典定义依赖于特定的公理系统,例如闭包算子的定义通常依赖于下面的公理:(C1)对于任意子集A和B,...
对称闭包是离散数学中的一个重要概念,它在图论、集合论和关系理论中有广泛的应用。本文将深入探讨对称闭包的概念,并通过C++编程实现来帮助理解。 对称闭包指的是一个关系R在其自身的对称操作下所形成的最小关系,...
自反闭包是图论和集合论中的一个概念,它在关系理论中尤其重要。本话题聚焦于如何使用C++编程语言来实现求解自反闭包的程序。 首先,我们来理解自反闭包的概念。在集合论中,一个关系R定义在集合A上,如果对于集合A...
在离散数学中,二元关系是集合论和图论中的基本概念,它描述了集合内的元素如何相互关联。本主题主要关注如何判断一个关系的性质以及如何计算其闭包。我们将深入探讨自反性、对称性和传递性的概念,并学习如何通过...
在完备剩余格上引入蕴涵闭包系统的概念,是将逻辑学中的蕴涵关系与抽象代数的闭包系统概念相结合的尝试。为了深入理解这些概念及其性质,我们首先要回顾一些基本定义。 首先,闭包系统是完备格理论中的一个基本概念...
研究[n]维空间中[m]个点的最小闭包球(MEB)问题。通过结合确定并删除内部点的技术到序列最小最优化(SMO)方法中,提出一种近似求解MEB问题的改进的SMO-型算法。证明了该算法具有线性收敛性。数值结果表明对于一些...
在计算机科学中,集合论和离散数学是基础理论,其中关系的闭包和等价关系是重要概念。本文将详细阐述这些概念及其应用。 首先,我们关注“关系的闭包”。关系闭包是指在给定集合A上的一个关系R,通过某种运算扩展R...
区别于传统的聚类方法,提出了以类为起点,通过构造闭包进行聚类的新方法,并建立了聚类判别模型,此模型给出了对于闭包间的交叉区域的检验点的判别准则。然后针对二维的聚类问题,提出了以最小圆为闭包的聚类判别...
其中,关系的闭包是一个核心概念,它涉及到集合论、二元关系和函数等多个领域。 首先,我们要理解集合论的基本概念。集合是由特定对象组成的整体,可以进行并集、交集、差集等基本运算。在有穷集合中,我们还可以...
编程题目:基于关系的矩阵表示,实现关系的自反闭包、对称闭包、传递闭包运算,并计算A上的关系R={,b>,,a>,,c>,,d>}的自反闭包、对称闭包、传递闭包,其中A={a,b,c,d}. 编程内容及要求: 编写程序,基于关系的矩阵...
代数闭包和向量闭包是凸分析领域中两个重要的概念,分别对应于线性空间中的特定类型集合的闭包。在凸分析中,闭包通常指的是某种极限过程下集合的最小闭集合,它能够包含原集合以及所有可能的极限点。在凸分析中,对...