文章目录
前言
一、times 循环函数
二、upto 循环函数
三、downto 循环函数
四、step 循环函数
1、step 循环函数递增操作
2、step 循环函数递减操作
五、闭包作为参数的使用规则
1、闭包作为最后一个参数可以写到括号外面
2、函数参数括号可以省略、参数使用逗号隔开
六、完整代码示例
前言
Groovy 为 Number 类实现的注入函数 , 也能实现循环 , 通过向注入的函数传入闭包参数 , 即可实现循环操作 ;
一、times 循环函数
Number 的注入函数 : 在 times 函数中 , 传入闭包 , 闭包中就是循环内容 ;
/** * 从零开始多次执行闭包。每次都将当前索引传递给闭包。 * Example: * <pre>10.times { * println it * }</pre> * Prints the numbers 0 through 9. * * @param self a Number * @param closure 闭包要调用多次 * @since 1.0 */ public static void times(Number self, @ClosureParams(value=SimpleType.class,options="int") Closure closure)
代码示例 :
// 循环 10 次 , 每次获取获取当前循环的此处 , 取值 0 ~ 9 // Groovy 向 Number 类中注入的 times 方法 println "" print "( 7 ) : " 10.times { // Integer it 就是每次的循环次数 print it + " " }
执行结果 :
( 7 ) : 0 1 2 3 4 5 6 7 8 9
二、upto 循环函数
upto 循环函数 : 传入一个大于 Number 的数值 , 自增循环 ;
/** * 从该数字迭代到给定的数字(含),每次递增一。 * * @param self a Number * @param to another Number to go up to * @param closure the closure to call * @since 1.0 */ public static void upto(Number self, Number to, @ClosureParams(FirstParam.class) Closure closure)
代码示例 :
// Groovy 向 Number 类中注入的 upto 方法 println "" print "( 8 ) : " 10.upto(20, { // Integer it 就是每次的循环次数 print it + " " })
执行结果 :
( 8 ) : 10 11 12 13 14 15 16 17 18 19 20
三、downto 循环函数
downto 循环函数 : 传入一个小于 Number 的数值 , 自减循环 ;
/** * 从这个数字迭代到给定的数字,每次递减一。 * * @param self a Number * @param to another Number to go down to * @param closure the closure to call * @since 1.0 */ public static void downto(Number self, Number to, @ClosureParams(FirstParam.class) Closure closure)
代码示例 :
// Groovy 向 Number 类中注入的 downto 方法 println "" print "( 9 ) : " 20.downto(10, { // Integer it 就是每次的循环次数 print it + " " })
执行结果 :
( 9 ) : 20 19 18 17 16 15 14 13 12 11 10
四、step 循环函数
step 循环函数 : 传入一个值 to , 以 stepNumber 步长进行迭代 ;
/** * 使用步长增量从该数字迭代到给定数字。每个中间编号都传递给给定的闭包。例子: * <pre>0.step( 10, 2 ) { * println it * }</pre> * Prints even numbers 0 through 8. * * @param self a Number to start with * @param to a Number to go up to, exclusive * @param stepNumber a Number representing the step increment * @param closure the closure to call * @since 1.0 */ public static void step(Number self, Number to, Number stepNumber, Closure closure)
1、step 循环函数递增操作
代码示例 :
// Groovy 向 Number 类中注入的 step 方法 println "" print "( 10 ) : " 10.step(30, 2, { // Integer it 就是每次的循环次数 print it + " " })
执行结果 :
( 10 ) : 10 12 14 16 18 20 22 24 26 28