【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )

简介: 【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )

文章目录

一、自定义闭包参数列表

1、定义一个自定义参数的闭包

2、定义多个自定义参数的闭包

3、为闭包参数指定默认值

二、完整代码示例





一、自定义闭包参数列表


如果要向 闭包 中 , 传递多个参数 , 需要 为 闭包 指定参数列表 ;


为闭包指定参数列表 , 需要在闭包 开始位置使用 " -> " 符号 , 在该符号的左侧指定参数列表 ;



1、定义一个自定义参数的闭包


在 " -> " 符号左侧写上一个变量 a , 此时 该变量 a 可以接收任意类型的值 , 在闭包中可以打印该参数 a 的值 ;


     

// 定义闭包变量 , 声明一个参数 a
        def closure3 = { a ->
            println "${a}"
        }
        // 调用闭包 , 不能传入参数
        closure3.call(1);
        closure3(2);


上述闭包打印结果为 :


1
2


2、定义多个自定义参数的闭包


在 " -> " 符号左侧写上多个变量 , 变量之间由逗号隔开 , 如 a , b , 此时该闭包可以接收多个参数 , 这两个参数可以是任意类型的 ;


   

// 定义闭包变量 , 声明两个参数 a, b
        // 在闭包中打印这两个参数
        def closure4 = { a, b ->
            println "${a} : ${b}"
        }
        // 调用闭包 , 不能传入参数
        closure4.call(1, 2);
        closure4(3, 4);


打印结果为 :


1 : 2
3 : 4


3、为闭包参数指定默认值


在闭包中 , 可以使用 参数名 = 默认值 的方式 , 为闭包参数指定默认值后 , 调用闭包时 , 可以不传入这个有默认值的参数 ;


如果 闭包 参数 都有默认值 ,


可以 不传递任何参数 ;

如果此时传递 1 11 个参数 , 会 按照默认规则从左到右为参数赋值 ;

如果 闭包 参数 , 有的有默认值 , 有的没有默认值 , 假设有 2 22 个参数 , 有 1 11 个有默认值 , 1 11 个没有默认值 ;


如果 传递 2 22 个参数 , 则从左到右赋值即可 ;

如果传递 1 11 个参数 , 则 为没有默认值的参数赋该值 ;


代码示例 :


   

// V. 为闭包参数指定默认值
        // 定义闭包变量 , 声明两个参数 a, b
        // 并为闭包指定默认值
        def closure5 = { a = 0, b = "Groovy" ->
            println "${a} : ${b}"
        }
        // 闭包有默认值 , 调用时可以不传入参数
        closure5()


执行结果 :


0 : Groovy






二、完整代码示例


完整代码示例 :


import org.codehaus.groovy.ant.Groovy
class Test {
    static void main(args) {
        // 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
1 : 2
3 : 4
0 : Groovy

image.png

目录
相关文章
|
2月前
|
存储 Python
有效的函数(一)
有效的函数(一)
|
6月前
函数(二)
函数(二)
25 0
|
6月前
|
数据库
什么是纯函数
纯函数是指在相同的输入下,总是返回相同的输出,且没有副作用的函数。具体来说,纯函数不会改变任何传入的参数,也不会在函数外部改变全局变量、文件系统、数据库等状态,它只是接收输入并返回输出,不会产生任何可观察的副作用。
70 0
|
程序员
函数
一、函数 函数是一段封装了特定功能的可重复使用的代码块。它接受输入参数,执行特定的操作,并返回一个结果。函数可以在程序中被多次调用,避免了重复编写相同的代码,提高了代码的复用性和可维护性。 函数通常具有以下几个特点: 1. 输入参数:函数可以接受零个或多个输入参数,用于传递数据给函数。输入参数可以是任意类型的数据,如整数、浮点数、字符串、数组等。函数可以使用输入参数来执行特定的操作。 2. 函数体:函数体是函数的核心部分,包含了函数要执行的操作。函数体是由一系列的语句组成的代码块,可以包含各种控制语句、变量声明、表达式等。函数体定义了函数的具体功能。 3. 返回值:函数可以返回一个结果给调用者
41 0
|
编译器
函函函函函函函函函函函数——two
函函函函函函函函函函函数——two
92 0
函函函函函函函函函函函数——two
|
监控 程序员 C语言
|
程序员 编译器 开发者
函数(1)
函数(1)
115 0
函数(1)
|
算法 编译器 C语言
函数部分的详细讲解
函数部分的详细讲解