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

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

文章目录

一、闭包参数列表

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





一、闭包参数列表


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


不接收参数 : 如果在定义闭包时 , 只写了 " -> " 符号 , 没有定义参数列表 , 表明该闭包 不希望接收任何参数 , 传入参数就会报错 ;

默认参数列表 : 如果在定义闭包时 , 没有写 " -> " 符号 , 也 没有定义参数列表 , 闭包可以 接收一个默认参数 it ;

接收自定义参数 : 如果在定义闭包时 , 写了 " -> " 符号 , 并且 定义参数列表 , 闭包 必须按照参数列表传入参数 ;


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


image.png






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


代码示例 :


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

image.png

目录
相关文章
|
8月前
|
存储 C语言
C 语言函数完全指南:创建、调用、参数传递、返回值解析
函数是一段代码块,只有在被调用时才会运行。 您可以将数据(称为参数)传递给函数。 函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用。
234 3
|
6月前
|
语音技术
语音识别----函数基础定义联系案例,函数的参数,函数的参数练习案例,函数的返回值定义语法,函数返回值之None,函数的说明文档,函数的嵌套调用,变量在函数中的作用域,内部变量变全局变量用global
语音识别----函数基础定义联系案例,函数的参数,函数的参数练习案例,函数的返回值定义语法,函数返回值之None,函数的说明文档,函数的嵌套调用,变量在函数中的作用域,内部变量变全局变量用global
在调用一个函数时传递了一个参数,但该函数定义中并未接受任何参数
在调用一个函数时传递了一个参数,但该函数定义中并未接受任何参数
133 2
|
7月前
|
Dart
Dart之函数(递归、匿名、自执行、可选参数、默认参数、命名参数)
Dart之函数(递归、匿名、自执行、可选参数、默认参数、命名参数)
|
8月前
|
存储 C#
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
方法是一段代码,只有在调用时才会运行。 您可以将数据(称为参数)传递给方法。 方法用于执行某些操作,也被称为函数。 为什么使用方法?为了重用代码:定义一次代码,然后多次使用。
157 0
|
Java 编译器
重载的方法能否根据返回类型进行区分?
重载的方法不能根据返回类型进行区分。方法的重载是基于方法名称和参数列表来进行区分的,与返回类型无关。这是因为在Java中,编译器在确定要调用哪个重载方法时,仅根据传递给方法的参数来进行决策。
386 0
|
JavaScript 开发者
指令-使用钩子函数的第二个binding参数拿到传递的值|学习笔记
快速学习指令-使用钩子函数的第二个binding参数拿到传递的值
指令-使用钩子函数的第二个binding参数拿到传递的值|学习笔记
|
存储 Python 容器
Python函数的参数列表
Python函数的参数列表
132 0
C++中转换构造函数与默认函数的优先级
C++中转换构造函数与默认函数的优先级
【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )
【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )
244 0
【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )

热门文章

最新文章