繁体   English   中英

在调用groovy闭包之前检查是否没有传递任何参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM