Gradle自动化构建(二) Groovy

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huanghuangjin/article/details/82257607

逻辑控制

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

猜你喜欢

转载自blog.csdn.net/huanghuangjin/article/details/82257607
今日推荐