前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )

【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )

作者头像
韩曙亮
发布2023-03-30 10:17:12
7550
发布2023-03-30 10:17:12
举报

文章目录

一、闭包参数列表


闭包的参数设置有如下情况 :

  • 不接收参数 : 如果在定义闭包时 , 只写了 " -> " 符号 , 没有定义参数列表 , 表明该闭包 不希望接收任何参数 , 传入参数就会报错 ;
  • 默认参数列表 : 如果在定义闭包时 , 没有写 " -> " 符号 , 也 没有定义参数列表 , 闭包可以 接收一个默认参数 it ;
  • 接收自定义参数 : 如果在定义闭包时 , 写了 " -> " 符号 , 并且 定义参数列表 , 闭包 必须按照参数列表传入参数 ;

如果只使用了 " -> " 符号 , 没有定义参数列表 , 仍然向闭包中传入参数的话 , 在运行时会报错 , 参考 【错误记录】Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of ) 博客 ;

二、闭包参数列表代码示例


代码示例 :

代码语言:javascript
复制
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()
    }
}

执行结果 :

代码语言:javascript
复制
Accept One Arguments : Hello
Accept One Arguments : Hello
Not Accept Arguments
Not Accept Arguments
1
2
1 : 2
3 : 4
0 : Groovy
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、闭包参数列表
  • 二、闭包参数列表代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档