N久没写东西,今天突发想法,写下来,废话少说,干活,先看几段代码:
求和
def sum(n)
{
total = 0
for(int i = 2; i <= n; i += 2)
{
total += i
}
total
}
println
"Sum of even numbers from 1 to 10 is ${sum(10)}"
乘法
def product(n)
{
prod = 1
for(int i = 2; i <= n; i += 2)
{
prod *= i
}
prod
}
println
"Product of even numbers from 1 to 10 is ${product(10)}"
def sqr(n)
{
squared = []
for(int i = 2; i <= n; i += 2)
{
squared << i ** 2
}
squared
}
上面三段代码,只是简单的运算,如果我们按照普通的写法就是这样了,如果你只是会写代码,那么最好别学软件开发了,为什么,我们要尽量的使自己的工作简单,你会不会觉得3个运算要写3个方法了?
如果我们想想IOC:在一个方法定义的参数中定义接口类型(当然Groovy对这个更加动态),然后在实际的调用当中把具体的类型传递给这个方法。这是IOC的体现!
那么现在我们来看看闭包:
def pickEven(n, block)
{
for(int i = 2; i <= n; i += 2)
{
block(i)
}
}
pickEven(10, { println it } )
上面这段代码,如果按java的意思,也算的上一个IOC的实现,为什么,我们的block就是一个抽象类型,而最下面对pickEven(10, { println it } )方法的调用,把block用闭包{ println it }来代替了(groovy的闭包也是对象,一切都是对象),{ println it }就是实际的类型对吧,那么上面的3段代码都用闭包来实现会是什么样?
pickEven(10) { println it }
先说明下:
这段代码 { println it }在方法的外面,因为groovy中,如果闭包是最后一个参数,可以提取到方法外
求和
total = 0
pickEven(10) { total += it }
println
"Sum of even numbers from 1 to 10 is ${total}"
乘法
product = 1
pickEven(10) { product *= it }
println
"Product of even numbers from 1 to 10 is ${product}"
感觉如何?
groovy的闭包是不是比java的IOC原理更加让你WOW!!!!
闭包就是个代码块,而在groovy中闭包是对象,这样,我们可以先定义一个方法,方法其中的一个参数就是闭包(最好把闭包定义在最后一个参数位置,个人意见,因为这样我们可以简写),那么A方法在最后的参数位置定义了一个闭包,B方法在调用A的时候就可以把A方法需要做的事情,在A(){XXX}的XXX中写上!!!
东西就写到这里了,至于能不能理解看每个人的想法了,祝大家groovy中找到快乐!
分享到:
相关推荐
标题中的“Groovy和Java相互调用1”指的是在编程时如何在Groovy语言环境中调用Java类,以及反之,如何在Java程序中调用Groovy类。这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 ...
在Java开发中,Groovy是一种强大的、动态类型的脚本语言,它可以无缝地与Java代码集成,为开发者提供了更简洁、灵活的语法。本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。...
Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...
1. 引入Groovy库:在Java项目中添加Groovy的相关依赖,通常是`groovy-all`,确保Java能够访问Groovy运行时环境。 2. 创建GroovyClassLoader:使用这个类加载器可以动态加载和执行Groovy脚本。它继承自Java的...
标题“hugo110-java_run_groovy-master_java_”表明这是一个关于使用Java运行Groovy脚本的项目,可能是某个GitHub仓库的克隆或归档。描述中提到,这个环境是为了方便用户(可能是开发者)实践Groovy语言,并为后续的...
Groovy是一种运行在Java平台上的动态脚本语言,它与Java紧密集成,提供了一种简洁、灵活的方式来编写Java代码。Groovy不仅支持静态类型检查,还可以在运行时动态地编译和执行代码,这使得它在Java平台中的应用场景...
Groovy是一种基于Java平台的动态脚本语言,它在Java开发者中越来越受欢迎,因为它提供了简洁、灵活的语法,以及强大的动态编程能力。Groovy与Java兼容性极佳,可以直接调用Java类库,使得它在Java生态系统中具有广泛...
此外,Groovy还提供了许多Java没有的特性,如闭包(Closure)、元编程(Metaprogramming)和DSL(领域特定语言)构造,这些都极大地扩展了Groovy的能力。在与Java SE类库交互时,你可能会发现这些特性使代码更具表达...
Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx
Groovy是一种基于JVM的动态编程语言,它不仅继承了Java的强大功能,还引入了动态类型、闭包、DSL等现代编程特性,使得编写自动化测试脚本变得更加简洁和高效。本文将详细介绍Groovy脚本在自动化测试中的应用,包括其...
通过对比Java,Groovy提供了更为简洁的语法,例如闭包(closures)的使用,使得代码更加优雅和易于理解。 #### 2. 面向对象编程在Groovy中的应用 Groovy继承了Java的面向对象特性,但又在此基础上进行了扩展和改进。...
- **闭包**:Groovy中的闭包类似于其他语言中的匿名函数,但具有更强的灵活性和表达能力。它们可以作为参数传递给方法,也可以作为返回值从方法中返回。 - **元编程**:Groovy提供了一系列强大的元编程工具,包括AST...
Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合...
总结起来,Groovy与Java的主要区别在于其更灵活的语法、丰富的内置功能(如闭包和元编程)、以及对脚本编写的支持。这些特性使Groovy在快速原型开发、脚本编写以及需要高度动态性的场合中成为理想的选择,同时在处理...
Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它与Java语言无缝集成,同时提供了动态语言的许多特性,例如动态类型、闭包(closures)和元编程等。它由James Strachan于2003年首次提出,并迅速受到了社区的...
Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...
SpringBoot、Gradle、Maven、Java和Groovy是Java生态系统中的重要组成部分,它们在现代软件开发中扮演着至关重要的角色。这篇详细的知识点解析将深入探讨这些技术及其相互关系。 1. **SpringBoot**: SpringBoot是...
《Groovy食谱:润滑Java的轮子》一书,正如其标题所示,是一本旨在帮助Java开发者通过Groovy脚本语言提升工作效率、简化开发流程的实用指南。本书由Scott Davis编写,作为Pragmatic Bookshelf出版社的一员,他在书中...