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 类groovy 调用 Java class 十分方便,只需要在类前导入该 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...
Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx
And, this book covers how Groovy supports Java type annotations and more. There is more to Groovy than the core language, so Learning Groovy 3, Second Edition covers the extended Groovy ecosystem. ...
Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署
Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...
Java中使用Groovy的三种方式,详细见我的博客。
概述主要介绍Java、spring与groovy结合使用,高清英文版本
java 动态脚本语言 精通 Groovy
Groovy 是基于Java的脚本语言。是Java语言扩展,因此可以与Java语言互相调用。在所有基于JVM虚拟机的语言中只有Scala可以媲美。使用Groovy可以快速灵活完成文本处理,数据库访问,XML处理等常见任务。研究表明,使用...
java运行groovy 环境,搭建方便自己练习groovy使用 与后续定时调度动态代码做准备
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...
了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...
SpringBoot-Gradle-Maven-Java-Groovy:SpringBoot通过不同构建工具和语言实现。
Making Java Groovy Kenneth A. Kousen 1.Easier Java 2.Closures, builders, and metaprogramming 3.Gradle for builds, Spock for testing 4.Groovy frameworks like Grails and Griffon 源码
Making Java Groovy
groovy初学者可以参考,Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。...
了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...
1、eclipse安装groovy的插件。 2、创建java project。 3、把groovy-all-2.1.9.jar,加入...4、编写hello.groovy脚本文件,并在java代码中调用脚本文件 http://blog.csdn.net/bolg_hero/article/details/19077981