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

时间:2014-01-04 09:02:33

标签: groovy closures

我使用maximumNumberOfParameters来检查闭包中使用的参数数量;

   def callerCls(Closure c){
     prinltn 'Nb :'+c.maximumNumberOfParameters;
      c();
  }

后续片段具有相同结果的pb。

  callerCls{


  }
 // and 
 callerCls{param1->

  }

他们两人都回来了:

Nb :1

虽然以下代码,但返回Nb :2

 callerCls{p1,p2->

      }

如何区分没有使用参数的闭包(作为第一个片段)?

1 个答案:

答案 0 :(得分:1)

groovy official site

中找到了答案
  

参数说明没有关闭的关闭 - > ,即{},是一个闭包   隐含地命名为'it'的参数。 (详见下文)   在某些情况下,您需要构造一个零参数的Closure,例如:   使用GString进行模板化,定义EMC属性等。您必须这样做   明确将你的Closure定义为{ - >而不只是{}

     

您也可以使用varargs作为参数,请参阅Formal Guide for   细节。可以模拟JavaScript样式的动态args,参考   非正式指南。