当前位置:网站首页>[groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
[groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
2022-07-05 04:41:00 【Programmer community】
List of articles
- One 、 Custom closure parameter list
- 1、 Define the closure of a custom parameter
- 2、 Define closures for multiple custom parameters
- 3、 Specify default values for closure parameters
- Two 、 Complete code example
One 、 Custom closure parameter list
If you want to Closure in , Passing multiple parameters , need by Closure Specify the parameter list ;
Specify a parameter list for the closure , Need to be in closure The starting position uses " -> " Symbol , Specify the parameter list on the left side of the symbol ;
1、 Define the closure of a custom parameter
stay " -> " Write a variable to the left of the symbol a , here The variable a Can receive any type of value , This parameter can be printed in the closure a Value ;
// Define closure variables , Declare a parameter a def closure3 = {
a -> println "${a}" } // Call closure , Cannot pass in parameters closure3.call(1); closure3(2);
The print result of the above closure is :
12
2、 Define closures for multiple custom parameters
stay " -> " Write multiple variables to the left of the symbol , Variables are separated by commas , Such as a , b , At this point, the closure can receive multiple parameters , These two parameters can be of any type ;
// Define closure variables , Declare two parameters a, b // Print these two parameters in the closure def closure4 = {
a, b -> println "${a} : ${b}" } // Call closure , Cannot pass in parameters closure4.call(1, 2); closure4(3, 4);
The result is :
1 : 23 : 4
3、 Specify default values for closure parameters
In closure , have access to Parameter name = The default value is The way , After specifying the default value for the closure parameter , When a closure is called , You can not pass in this parameter with default value ;
If Closure Parameters All have default values ,
- Sure No parameters are passed ;
- If you pass
1
1
1 Parameters , Meeting Assign values to parameters from left to right according to the default rules ;
If Closure Parameters , Some have default values , Some have no default values , Suppose there is
2
2
2 Parameters , Yes
1
1
1 Each has a default value ,
1
1
1 There is no default value ;
- If Pass on
2
2
2 Parameters , Then assign values from left to right ;
- If you deliver
1
1
1 Parameters , be Assign this value to a parameter that has no default value ;
Code example :
// V. Specify default values for closure parameters // Define closure variables , Declare two parameters a, b // And specify the default value for the closure def closure5 = {
a = 0, b = "Groovy" -> println "${a} : ${b}" } // Closures have default values , You can call without passing in parameters closure5()
Execution results :
0 : Groovy
Two 、 Complete code example
Complete code example :
import org.codehaus.groovy.ant.Groovyclass Test {
static void main(args) {
// III. Receive a closure of a custom parameter // Define closure variables , Declare a parameter a def closure3 = {
a -> println "${a}" } // Call closure , Cannot pass in parameters closure3.call(1); closure3(2); // IV. Receive the closure of two custom parameters // Define closure variables , Declare two parameters a, b // Print these two parameters in the closure def closure4 = {
a, b -> println "${a} : ${b}" } // Call closure , Cannot pass in parameters closure4.call(1, 2); closure4(3, 4); // V. Specify default values for closure parameters // Define closure variables , Declare two parameters a, b // And specify the default value for the closure def closure5 = {
a = 0, b = "Groovy" -> println "${a} : ${b}" } // Closures have default values , You can call without passing in parameters closure5() }}
Execution results :
121 : 23 : 40 : Groovy
边栏推荐
- Neural networks and deep learning Chapter 6: Circular neural networks reading questions
- How can CIOs use business analysis to build business value?
- TPG x AIDU|AI领军人才招募计划进行中!
- You Li takes you to talk about C language 7 (define constants and macros)
- File upload bypass summary (upload labs 21 customs clearance tutorial attached)
- [PCL self study: feature9] global aligned spatial distribution (GASD) descriptor (continuously updated)
- 2022-2028 global and Chinese FPGA prototype system Market Research Report
- Function (basic: parameter, return value)
- 蛇形矩阵
- Observable time series data downsampling practice in Prometheus
猜你喜欢
A solution to the problem that variables cannot change dynamically when debugging in keil5
3 minutes learn to create Google account and email detailed tutorial!
Introduce Hamming distance and calculation examples
Flutter tips: various fancy nesting of listview and pageview
防护电路中的元器件
Burpsuite grabs app packets
可观测|时序数据降采样在Prometheus实践复盘
MacBook installation postgresql+postgis
介绍汉明距离及计算示例
How to get the first few pieces of data of each group gracefully
随机推荐
Introduce Hamming distance and calculation examples
TPG x AIDU|AI领军人才招募计划进行中!
OWASP top 10 vulnerability Guide (2021)
Data security -- 14 -- Analysis of privacy protection governance
[crampon programming] lintcode decoding Encyclopedia - 872 termination process
包 类 包的作用域
Leetcode 222 number of nodes of complete binary tree
Variable category (automatic, static, register, external)
PR video clip (project packaging)
自动语音识别(ASR)研究综述
[Business Research Report] Research Report on male consumption trends in other economic times -- with download link
Pointer function (basic)
首席信息官如何利用业务分析构建业务价值?
Hypothesis testing -- learning notes of Chapter 8 of probability theory and mathematical statistics
Chapter 6 text processing tools for shell programming (awk)
Neural networks and deep learning Chapter 3: linear model reading questions
取余操作是一个哈希函数
Construction d'un Cluster redis sous Windows
这是一个不确定的时代
Decimal to hexadecimal