一个closure就是一段被当作对象包装起来的代码,它是一个对象
closure的行为就像method,因为它可以接受参数也可以返回值
把迭代和针对每一次迭代作何处理分离开来并不是引入closure的唯一原因,
另一个可能更为重要的原因是处理资源,例如文件的打开和关闭,数据库的连接和释放,
网络的连接和释放等等
定义closure的三种方法:
1){}
2)def closure={}
3)def closure=reference.&method
如果closure的参数有显式的类型声明则类型检查不是发生在编译时刻而是发生在运行时刻
closure对象的方法:
call(),
getParameterTypes(),
curry(),该方法返回当前closure的一个克隆对象,该克隆对象的参数可以绑定一些变量值
该方法的真正强大之处在于当closure的参数也是closure的时候,此时curry()用来注入
定制的closure
isCase(),
closure的scope定义:
1)什么样的本地变量是可访问的
2)this指代的是什么
3)什么样的域和方法是可访问的
注意:一对大括号{}表示的是声明一个closure而不是执行一个closure
closure能够记住声明它时的上下文(birthday context)并且通过一个引用(reference)
在自己的整个生命周期中随身携带该上下文
本地变量如果在closure声明时(declaration time)被访问则该变量将被作为引用与该closure进行绑定
但是这些在声明时绑定的变量直到closure被调用是才会被求值
除了本地变量之外其他的作用域元素例如:this,域,方法,参数也和本地变量同样处理
closure对声明自己的对象的引用保存在一个特殊的变量中该变量就是owner
(this是个问题好像树上解释的不对!!!!!!!!!!!!!!!!)
groovy能够动态的把逻辑植入对象之中并且管理对象所在环境的上下文
从closure中返回:
1)end return closure中最后的一个表达式值即为返回值
2)利用关键字return在closure中任意地方返回
分享到:
相关推荐
在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...
4. **GString**: Groovy的字符串支持模板语法,可以方便地进行字符串格式化,如`"Hello, ${name}"`。 5. **运算符重载和方法默认参数**: Groovy允许操作符重载和方法定义默认参数,增强了代码的可读性和灵活性。 **...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。
### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...
以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...
Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合...
通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...
根据给定的文件信息,以下是对Groovy编程语言中几个关键知识点的深入解析: ### 多线程在Groovy中的运用 在Groovy中,线程的创建与启动非常直观,可以通过构造`Thread`对象并传入一个闭包(Closure)来实现。闭包...
读书笔记:Groovy程序设计
读书笔记:Groovy 程序设计学习
4. **GString**:Groovy的字符串可以包含表达式,通过`${}`来嵌入变量或表达式的值,方便字符串拼接。 5. **操作符重载**:Groovy允许自定义操作符,如`+`、`-`等,以实现自定义的逻辑。 6. **元编程**:Groovy...
Groovy是另一种基于JVM的动态编程语言,它的语法简洁,易于阅读和编写。Groovy与Java高度互操作,可以在现有的Java项目中无缝集成。Groovy的优点在于它支持闭包和元编程,使得代码更加简洁和可扩展。 Stackless ...
本文将深入探讨如何在Java中调用三种流行的脚本语言:Jython、JRuby和Groovy。 ### Jython Jython是Python的一个Java实现,它允许Java开发者利用Python的强大语法和丰富的库。要使用Jython,首先需要在项目中引入...
本系列文章是从原著《Groovy For Domain-Specific Languages》(原作者: Fergal Dearle)中翻译而来,从中加入了一些本人自己的读书笔记和理解。本系列文章不为任何商业目的,只为更好的传播 groovy dsl 技术知识。...
读书笔记:函数式编程 scala,java8,groovy 学习
在项目的根目录下创建一个sonar-project.properties文件从项目根目录运行sonar-scanner命令单击分析结尾处提供的链接,以在SonarQube UI中浏览项目的质量笔记CodeNarc :可以通过设置sonar.groovy.codenarc.repor
在Groovy-chenyun2000-mht.rar压缩包里的"MHT"文件可能是Groovy或Grails相关的教程、讲座笔记或者案例研究,用户可以离线阅读这些资料,深入理解Groovy语言和Grails框架。 Groovy的主要特点包括: 1. **简洁语法**...
【Jenkins笔记笔记笔记】 Jenkins 是一个开源的持续集成(CI)服务器,它使得开发者能够在软件开发过程中实现自动化构建、测试和部署。这个工具在IT行业中被广泛使用,尤其在敏捷开发和DevOps实践中扮演着重要角色...