文章目录
一、闭包参数列表
二、闭包参数列表代码示例
一、闭包参数列表
闭包的参数设置有如下情况 :
不接收参数 : 如果在定义闭包时 , 只写了 " -> " 符号 , 没有定义参数列表 , 表明该闭包 不希望接收任何参数 , 传入参数就会报错 ;
默认参数列表 : 如果在定义闭包时 , 没有写 " -> " 符号 , 也 没有定义参数列表 , 闭包可以 接收一个默认参数 it ;
接收自定义参数 : 如果在定义闭包时 , 写了 " -> " 符号 , 并且 定义参数列表 , 闭包 必须按照参数列表传入参数 ;
如果只使用了 " -> " 符号 , 没有定义参数列表 , 仍然向闭包中传入参数的话 , 在运行时会报错 , 参考 【错误记录】Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of ) 博客 ;
二、闭包参数列表代码示例
代码示例 :
import org.codehaus.groovy.ant.Groovy class Test { static void main(args) { // I. 接收默认一个参数的变薄 // 定义闭包变量 def closure = { println "Accept One Arguments : ${it}" } // 调用闭包 closure.call("Hello"); closure("Hello"); // II. 不接收任何参数的闭包 // 定义闭包变量 , 不允许传入参数 def closure2 = { -> println "Not Accept Arguments" } // 传入参数会报错 //closure2("Hello") // 调用闭包 , 不能传入参数 closure2.call(); closure2(); // III. 接收一个自定义参数的闭包 // 定义闭包变量 , 声明一个参数 a def closure3 = { a -> println "${a}" } // 调用闭包 , 不能传入参数 closure3.call(1); closure3(2); // IV. 接收两个自定义参数的闭包 // 定义闭包变量 , 声明两个参数 a, b // 在闭包中打印这两个参数 def closure4 = { a, b -> println "${a} : ${b}" } // 调用闭包 , 不能传入参数 closure4.call(1, 2); closure4(3, 4); // V. 为闭包参数指定默认值 // 定义闭包变量 , 声明两个参数 a, b // 并为闭包指定默认值 def closure5 = { a = 0, b = "Groovy" -> println "${a} : ${b}" } // 闭包有默认值 , 调用时可以不传入参数 closure5() } }
执行结果 :
Accept One Arguments : Hello Accept One Arguments : Hello Not Accept Arguments Not Accept Arguments 1 2 1 : 2 3 : 4 0 : Groovy