【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )
【摘要】
文章目录
一、闭包参数列表二、闭包参数列表代码示例
一、闭包参数列表
闭包的参数设置有如下情况 :
不接收参数 : 如果在定义闭包时 , 只写了 " -> ...
一、闭包参数列表
闭包的参数设置有如下情况 :
- 不接收参数 : 如果在定义闭包时 , 只写了 " -> " 符号 , 没有定义参数列表 , 表明该闭包 不希望接收任何参数 , 传入参数就会报错 ;
- 默认参数列表 : 如果在定义闭包时 , 没有写 " -> " 符号 , 也 没有定义参数列表 , 闭包可以 接收一个默认参数 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()
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
执行结果 :
Accept One Arguments : Hello
Accept One Arguments : Hello
Not Accept Arguments
Not Accept Arguments
1
2
1 : 2
3 : 4
0 : Groovy
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/122209346
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)