Groovy实战一

本文详细探讨了Groovy中的闭包及其与基本类型、字符串、数据结构(列表、映射、范围)的结合使用。重点讲解了闭包的三个关键变量:this、owner和delegate,以及它们在不同情况下的值。此外,还介绍了闭包的委托策略和面向对象特性,包括groovy中的类、接口定义及元编程。
摘要由CSDN通过智能技术生成

一、闭包与基本类型结合使用(闭包实现循环):

/**
 * 闭包与基本类型结合使用
 * 举例:实现阶乘 10!
 */

//使用循环: 传统方法
int sum1 = 1
for (i = 1; i < 6; i++) {
    sum1 *= i
}
println("sum1 = " + sum1)

//使用循环: groovy用法
int sum2 = 1
for (i in 1..5) {
    sum2 *= i
}
println("sum2 = " + sum2)

//使用循环: groovy闭包用法
int sum3 = 1
1.upto(5, { num -> sum3 *= num })
println("sum3 = " + sum3)

int sum4 = 1
5.downto(1, { num -> sum4 *= num })
println("sum4 = " + sum4)

int sum5 = 1
5.downto(1) { num -> sum5 *= num }
println("sum5 = " + sum5)

int sum6 = 0
101.times { num -> sum6 += num }
println("sum6 = " + sum6)

二、闭包与String结合使用

/**
 * 闭包与String结合使用
 */
String str = "the 2 and 3 is 5"
//each的遍历
str.each {
    String temp -> print temp.multiply(2)
}
println()

//find 查找符合条件的第一个
String str2 = 'the 2 and 3 is 5'
println str2.find {
    String s -> s.isNumber()
}
println str2.findAll() {
    String s -> s.isNumber()
}

// any
def res = str2.any {
    String s -> s.isNumber()
}
println(res)

println str2.every { String s -> s.isNumber() }

println str2.collect { it.toUpperCase() }

三、闭包的三个重要变量:this、owner、delegate

/**
 * 闭包的三个重要变量:this、owner、delegate
 */
def scriptClosure = {
    println "scriptClosure this: " + this //代表闭包定义处的类
    println "scriptClosure owner: " + owner //代表闭包定义处的类或者对象
    println "scriptClosure delegate: " + delegate //代表任意对象,默认与owner一致
}
scriptClosure.call()

//定义了一个内部类
class Person {
    def classClosure = {
        println "classClosure this: " + this //代表闭包定义处的类
        println "classClosure owner: " + owner //代表闭包定义处的类或者对象
        println "classClosure delegate: " + delegate //代表任意对象,默认与owner一致
    }

    def say() {
        def classClosure = {
            println "methodClassClosure this: " + this //代表闭包定义处的类
            println "methodClassClosure owner: " + owner //代表闭包定义处的类或者对象
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值