[英]check if no parameters passed in groovy closure before calling it
我使用maximumNumberOfParameters
检查闭包中使用的参数数量;
def callerCls(Closure c){
prinltn 'Nb :'+c.maximumNumberOfParameters;
c();
}
以下片段具有相同结果的铅。
callerCls{
}
// and
callerCls{param1->
}
他们两个都返回:
Nb :1
尽管遵循以下代码,但返回Nb :2
。
callerCls{p1,p2->
}
如何区分不使用参数的闭包(作为第一个代码段)?
在groovy官方网站上找到答案
参数注释不带->的闭包(即{})是带有一个参数的闭包,其隐式命名为“ it”。 (有关详细信息,请参见下文)在某些情况下,您需要使用零参数构造一个Closure,例如,使用GString进行模板制作,定义EMC属性等。您必须将Closure明确定义为{->}而不是{}
您也可以将varargs用作参数,有关详细信息,请参考《正式指南》。 可以模拟JavaScript样式的动态参数,请参考《非正式指南》。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.