`

通过 Groovy 进行循环

 
阅读更多

通过 Groovy 进行循环

同大多数脚本语言一样,Groovy 经常被宣传为生产力更高 的 Java 语言替代品。您已经看到了 Groovy 缺少类型能够如何减少打字工作。在这一节,将创建并试用一个 repeat 函数。在这个过程中,将进一步探索 Groovy 提高效率的方式。

更好、更短的循环

下面这种方法可以更好地感受 Groovy 缺乏类型的好处:首先,用与创建 HelloWorld 相同的方式创建一个 Groovy 类,将这个类称为 MethodMadness,并删除自动生成的类体:将要定义一个独立的 repeat 函数。现在在控制台中输入以下代码:

def repeat(val){
 for(i = 0; i < 5; i++){
  println val
 }
}

起初,从 Java 的角度来看,这个小函数看起来可能有些怪(实际上,它很像 JavaScript)。但它就是 Java 代码,只不过是用 Groovy 的样式编写的。

深入方法

repeat 函数接受一个变量 val。请注意参数不需要 def。方法体本质上就是一个 for 循环。

调用这个函数。

repeat("hello
  world")

会输出 “hello world” 五次。请注意,for 循环中省略了 int。没有变量类型的 for 循环要比标准的 Java 代码短些。现在看看如果在代码里加入范围会出现什么情况。

Groovy 中的范围

范围 是一系列的值。例如 “0..4” 表明包含 整数 0、1、2、3、4。Groovy 还支持排除范围,“0..<4” 表示 0、1、2、3。还可以创建字符范围:“a..e” 相当于 a、b、c、d、e。“a..<e” 包括小于 e 的所有值。

循环范围

范围为循环带来了很大的方便。例如,前面从 0 递增到 4 的 for 循环如下所示:

for(i = 0; i < 5; i++)

范围可以将这个 for 循环变得更简洁,更易阅读:

def repeat(val){
 for(i in 0..5){
  println val
 }
}

设置范围

如果运行这个示例,可能会注意到一个小问题:“Hello World” 输出了六次而不是五次。这个问题有三种解决方法:

  • 将包含的范围限制到 4:
    for(i in 0..4)
  • 从 1 而不是 0 开始:
    def repeat(val){
     for(i in 1..5){
      println val
     }
    }
  • 将范围由包含改为排除:
    def repeat(val){
     for(i in 0..<5){
      println val
     }
    }

不论采用哪种方法,都会得到原来的效果 — 输出 “Hello World” 五次。

默认参数值

现在已经成功地使用 Groovy 的范围表达式缩短了 repeat 函数。但这个函数依然有些限制。如果想重复 “Hello World” 八次该怎么办?如果想对不同的值重复不同次数 — 比如 “Hello World” 重复八次,“Goodbye Sunshine” 重复两次,这时该怎么办?

每次调用 repeat 时都要指定需要的重复次数的做法已经过时了,特别是在已经适应了默认行为(重复五次)的时候。

Groovy 支持默认参数值,可以在函数或方法的正式定义中指定参数的默认值。调用函数的程序可以选择省略参数,使用默认值。

更加复杂的参数值

使用前面的 repeat 函数时,如果希望调用程序能够指定重复值,可以像下面这样编码:

def repeat(val, repeat=5){
 for(i in 0..<repeat){
  println val
 }
}

像下面这样调用该函数:

repeat("Hello World", 2)
repeat("Goodbye sunshine", 4)
repeat("foo")

结果会输出 “Hello World” 两次,“Goodbye sunshine” 四次,“foo” 五次(默认次数)。

 

分享到:
评论

相关推荐

    通过groovy自定义函数实现提取明细表字段至主表字段.rar

    2. **数据访问**:Groovy可以方便地与数据库进行交互,通过JDBC API或者ORM框架(如Hibernate)来查询明细表和主表。这里可能涉及到SQL查询语句的编写,以及结果集的处理。 3. **字段映射**:为了将明细表中的字段...

    groovy基础语法.pdf

    在Groovy中,基本语法包括变量、属性、方法和闭包的定义,控制结构如if-else、for循环、while循环、switch语句,以及类和对象的操作等。 变量和数据类型: Groovy是动态类型语言,变量无需声明类型即可直接赋值使用...

    groovy常用Script

    Groovy是一种基于Java平台的动态编程语言,它与Java语法高度兼容,但提供了...通过学习和实践这些文件中的代码,Groovy初学者可以逐步掌握Groovy语言的基础和一些高级特性,为进一步深入学习和应用Groovy打下坚实基础。

    groovy in action.pdf

    这部分内容覆盖了Groovy中的各种循环和条件语句,帮助读者掌握如何使用Groovy来实现复杂的逻辑控制流程。 #### 动态对象导向,Groovy风格 Groovy的动态特性是其与其他静态类型语言的主要区别之一。这部分内容深入...

    Groovy 入门学习

    适合想了解groovy 编程开发的人员 Groovy - hellworld Groovy - 变量 Groovy - 静态import Groovy - 字符串 Groovy - 分支结构语句 Groovy - 循环结构语句

    groovy+in+action

    - **循环语句**:Groovy支持while、for等循环语句,并引入了更简洁的迭代方式,如each方法。 - **异常处理**:Groovy继承了Java的异常处理机制,同时也提供了更加简洁的语法。 **3. 集合类型** - **列表(List)*...

    Groovy应用(基本操作)

    Groovy支持常见的控制结构,如if-else、for循环、while循环以及switch语句。其语法与Java相似但更简洁,例如: ```groovy def number = 10 if (number &gt; 5) { println "Number is greater than 5" } else { ...

    Groovy in Action源代码

    1. **基础语法**:源代码中包含了Groovy的基础语法示例,如变量声明、流程控制(if-else、switch-case、for、while循环)、函数定义和调用、类与对象的创建等。这些例子可以帮助初学者快速掌握Groovy的基本编程结构...

    groovy_demo

    - **流程控制语句**:Groovy支持`if/else`、`switch/case`、`for`、`while`循环,同时还有`try/catch/finally`异常处理结构。 - **简化的异常处理**:Groovy的异常处理可以更简洁,如`try { ... } catch ...

    groovy学习

    在Groovy的学习过程中,首先会接触到它的基本语法结构,如变量声明、控制流语句(如if-else、for循环、while循环)和函数定义。Groovy的语法相对简洁,与Java相比,代码更易读写。例如,Groovy支持闭包,这是一种...

    groovy programming(2006.12).pdf

    书中详细介绍了Groovy的基础语法,包括变量声明、类型推断、控制结构(如if语句、while循环)、数组和集合等基本概念。通过对比Java,Groovy提供了更为简洁的语法,例如闭包(closures)的使用,使得代码更加优雅和...

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 ...通过以上内容的学习,读者将能够了解Groovy的基本概念、主要特性和开发环境设置方法,同时也能掌握Groovy的基本语法和一些进阶技巧。这些知识点为后续深入学习提供了坚实的基础。

    Groovy 2 Cookbook

    - Groovy 中的控制流语句详解,例如条件判断、循环等。 - 如何使用 Groovy 进行简单的文本处理和文件操作。 2. **进阶篇**: - 面向对象编程特性,包括类、接口、继承、多态等。 - 闭包和元编程的深入探讨,...

    groovy-binary-2.2.2.zip

    4. **GString**:Groovy的GString可以方便地进行字符串插值,类似于Ruby的字符串模板。 5. **GroovyShell和GroovyScriptEngine**:这些工具允许在运行时执行Groovy脚本,使得Groovy成为理想的脚本语言。 6. ** ...

    Groovy IN ACTION

    通过阅读《Groovy in Action》,Java开发者可以拓宽视野,学习一种新的、更高效的编程方式,同时也能更好地利用Groovy的灵活性和便利性来提升开发效率。这本书不仅适合初学者入门,也对有经验的Groovy开发者提供了...

    groovy 学习gradle学习经典手册

    1. **基础语法**:了解Groovy的基本结构,如变量声明、数据类型、流程控制语句(if-else、switch、for循环、while循环)以及函数定义和调用。 2. **动态特性**:掌握Groovy的动态类型系统,理解鸭子类型和运行时类型...

    Groovy and Grails Recipes(清晰PDF)

    ### Groovy and Grails ...通过这些章节的学习,读者将能够全面了解Groovy编程语言和Grails框架,并掌握如何使用它们来开发高效、可维护的应用程序。无论是新手还是有经验的开发者,都能从中获得宝贵的知识和实践经验。

    Beginning Groovy and Grails, From Novice to Professional

    - **控制结构**:Groovy支持常见的控制结构,如if语句、while循环、for循环等,并引入了闭包(Closures)的概念,这是一种强大的功能,可以用于函数式编程。 - **面向对象编程**:Groovy不仅完全兼容Java的对象模型...

Global site tag (gtag.js) - Google Analytics