Gradle自动化构建(二) Groovy 逻辑、闭包

###逻辑控制
def a = 1.23
def ret
switch (a) { // switch case 中可以是任意类型的值
case “abc”: ret = “abc”; break // 写在同一行 需要用 ; 隔开一下
case [4, 5.2, 1, ‘inlist’]: ret = “list”; break // [] 表示list
case 12…30: ret = “range”; break // range
case Integer: ret = “Integer”; break // 整型
case Double: ret = “Double”; break // Double整型
case BigDecimal: ret = “BigDecimal”; break // BigDecimal类型
default: ret = ‘default’; break
}
println ret // BigDecimal

def sum = 0
for (i in 1.2..3.1) {
    sum += i
}
println sum // 3.4 , i 的值取第一个数加1 , 1.2 、 2.2 , 3.2 小于 3.1 则不取

def num = 0
for (i in [1, 3, 5, 6.1]) { // 对 list 的循环
    num += i
}
println num // 15.1

def som = 0
for (i in ['a':1, 'b':2, "c":4]) { // 对 map 的循环
    som += i.value
}
println som // 7

// 其他逻辑控制语句与java一致

###闭包
// 闭包:就是一个代码块,与函数相似 定义、参数、返回值
def closure = { -> println “i am closure” } // -> 左边的是闭包的参数(没有参数就表示空),右边的是闭包体
closure.call() // 调用闭包,也可以像函数一样调用闭包 closure()

def a = { String name, int num=0 -> println "hehe${name} $num" } // 闭包的参数与函数的参数一样,可以定义默认参数
a("---", 1) // hehe--- 1  传参

def b = { println "default parameter : $it" } // 所有闭包都有一个默认参数 it , it 只能取一个值, 传多个参数会报错
b("som") // default parameter : som   如果闭包有参数,那么闭包中不会再有it隐式变量了

def c = { println "eheh" } // 所有闭包都有返回值,即闭包体中的最后一句代码(可加return,也可不加),如果闭包体中的最后一句代码不是值,那么返回 null
def d = c()
println d // null

###闭包2
int fab(int number) { // 求number的阶乘
int ret = 1
1.upto(number, { num -> ret*=num }) // 1.upto(number 表示数由1递增到number , { num -> ret*=num }) 表示递增的数以参数的形式传入这个闭包中
return ret
}
int fab2(int number) { // 求number的阶乘
int ret = 1
number.downto(1) { // 有 upto 就有 downto , 闭包还可以写在 () 外面,效果是一样的
ret *= it
}
return ret
}
int a = fab(5)
println a // 120
int b = fab2(5)
println b // 120

int leijia(int number) { // 累加计算
    int ret = 0
    number.times { // number.times 表示 数由 0 递增到 number-1 , 并以参数的形式传入传入闭包中 , 如果不知道闭包的参数个数与类型,就去看对应函数的源码即可
        ret += it
    }
    return ret
}
def c = leijia(4)
println c // 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值