【Groovy】闭包 Closure ( 闭包类 Closure 简介 | 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法 )
文章目录
- 一、闭包类 Closure 简介
- 二、 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法
- 三、 完整代码示例
一、闭包类 Closure 简介
闭包是 Closure 对象 , Closure 类中有很多成员 , 以及封装的函数 , 下面是 Closure 类的继承结构 ;
/*** 在 Groovy 中代表任何闭包对象 .* <p>* Groovy允许以简短的形式调用闭包实例。例如:* <pre>* def a = 1* def c = { a }* assert c() == 1* </pre>* 为了能够以这种方式在您自己的子类中使用闭包,* 您需要提供一个带有您想要的任何签名的doCall方法。* 这确保了{@link#getMaximumNumberOfParameters()}* 和{@link#getParameterTypes()}在* 没有任何额外代码的情况下也可以工作。* 如果没有提供doCall方法,则必须以长形式使用闭包,如* <pre>* def a = 1* def c = {a}* assert c.call() == 1* </pre>** @author <a href="mailto:james@coredevelopers.net">James Strachan</a>* @author <a href="mailto:tug@wilson.co.uk">John Wilson</a>* @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>* @author Graeme Rocher* @author Paul King*/
public abstract class Closure<V> extends GroovyObjectSupport implements Cloneable, Runnable, GroovyCallable<V>, Serializable {}
二、 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法
在 闭包类 Closure 中 , 有如下 222 个成员 :
protected Class[] parameterTypes;protected int maximumNumberOfParameters;
Class[] parameterTypes
是参数类型 , int maximumNumberOfParameters
是最大所需参数个数 , 当调用闭包时 , 不知道向闭包中传递什么类型的参数时 , 不知道传入多少个参数时 , 此时可以使用 上述 222 个成员 ;
如下代码 , 定义一个闭包 :
// 定义闭包
// 该闭包接收 2 个参数
def closure = {int a, String b ->
}
如果使用上述 closure 闭包时 , 不知道该闭包接收什么类型的参数 , 和参数个数 , 可以使用 println 打印闭包参数 ;
打印参数类型 : 上述 222 个参数 , 打印出来的结果是 [int, class java.lang.String] ;
// 打印参数类型
println closure.parameterTypes
打印参数个数 :
// 打印参数个数
println closure.maximumNumberOfParameters
三、 完整代码示例
完整代码示例 :
// 定义闭包
// 该闭包接收 2 个参数
def closure = {int a, String b ->
}// 打印参数类型
println closure.parameterTypes// 打印参数个数
println closure.maximumNumberOfParameters
执行结果 :
[int, class java.lang.String]
2
【Groovy】闭包 Closure ( 闭包类 Closure 简介 | 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法 )相关推荐
- 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员赋值及源码分析 )
文章目录 总结 一.闭包类 Closure 简介 二.闭包类 Closure 中 this.owner.delegate 成员 源码分析 三.分析编译后的字节码文件内容 总结 在闭包中 , 打印 th ...
- 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员区别 | 静态闭包变量 | 闭包中定义闭包 )
文章目录 总结 一.静态闭包变量 1.执行普通闭包变量 2.执行静态闭包变量 二. 在闭包中定义闭包 三. 完整代码示例 总结 在闭包中 , 打印 this , owner , delegate , ...
- 一篇文章汇总Python装饰器全知识图谱(使用场景,基本用法,参数传递,闭包操作,类装饰器和AOP)
装饰器,是将Python代码变得低耦合,简洁优美的必经之路,同时也是实现闭包操作,AOP编程的基础.这一篇博客从装饰器的产生原因,基本使用,延伸到参数传递,闭包操作,最后到类装饰器和AOP,希望能用我 ...
- python闭包和函数调用区别_函数闭包与可调用类
请注意,由于之前在我的测试代码中发现了一个错误,我原来的答案是不正确的.修订版如下. 我做了一个小程序来测量运行时间和内存消耗.我创建了以下可调用类和一个闭包:class CallMe: def __ ...
- php closure invoke,PHP Closure类详解
PHP Closure 类是用于代表匿名函数的类,匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象,Closure类摘要如下: Closure { __construct ( void ) ...
- Swift-闭包,隐式返回、尾随闭包、值捕获、逃逸闭包、自动闭包
闭包 闭包可以捕获和存储其所在上下文中任意常量和变量的引用,被称为包裹常量和变量. Swift 会为你管理在捕获过程中涉及到的所有内存操作. 全局和嵌套函数实际上也是特殊的闭包,闭包采用如下三种形式之 ...
- js闭包是什么?对js闭包的理解
结合 MDN 官网中 JavaScript 章节中对闭包详解,我们需要理清的问题有,什么是闭包.闭包产生的条件.以及闭包的用途. 1.1 闭包的概念 闭包(closure)是一个函数以及其捆绑的周边环 ...
- 你不懂JS:作用域与闭包 第五章:作用域闭包
希望我们是带着对作用域工作方式的健全,坚实的理解来到这里的. 我们将我们的注意力转向这个语言中一个重要到不可思议,但是一直难以捉摸的,几乎是神话般的 部分:闭包.如果你至此一直跟随着我们关于词法作用域 ...
- 从λ演算到函数式编程聊闭包(2):彻底理解JavaScript闭包规则
闭包是很多语言都具备的特性,上篇<从抽象代数漫游函数式编程(1):闭包概念再Java/PHP/JS中的定义> 闭包的特性 闭包有三个特性: 函数嵌套函数 函数内部可以引用外部的参数和变量 ...
最新文章
- wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
- 【转】做正确的事情,等着被开除(Do the right thing, Wait to get fired)
- Mysql Router 读写分离配置
- 关于Spring Boot WebSocket整合以及nginx配置详解
- 软件测试oracle问题,数据库基础:Oracle数据库中时间问题比较
- 用tar备份linux
- linux文件属性权限相关
- php 请求url没有扩展名,apache – 将.php重定向到无扩展名,并在没有.php的情况下创建url...
- Codeforce - 920C- Swap Adjacent Elements 排序|思维
- 【CodeForces - 569C】Primes or Palindromes? (思维,分析范围,暴力枚举判断)
- MySQL8.0版本和5.7通过Navicat远程连接
- linunx 定位最耗资源的进程
- 如何在有道云笔记的Markdown上上传本地图片(亲测好用,而且不用开会员)
- python如何请求curl_Python爬虫偷懒神器 —— 一键构造请求头!
- 罗定职业技术学院计算机考试二级,2018年罗定职业技术学院五年一贯制单独招生术科考试成绩.PDF...
- 世界上增福最快的方法!【错过就可惜了】
- python去除pdf密码
- 微信小程序 百度SDK定位 坐标纠偏
- git 下载慢的问题解决
- Android 应用中使用ContentObserver自动填写短信验证码