`
jamie.wang
  • 浏览: 344931 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

groovy简明教程(五)控制结构

    博客分类:
  • Java
阅读更多

7. Groovy的控制结构

要理解groovy的控制结构,首先要明白其布尔值的判定。groovy借鉴了很多脚本语言,把数字0,空字符串,空集合等判定为false,除此之外null对象为false。

7.1 swith语句

groovy的swith语句支持很多类型,如下面的例子,实际上是调用了case条件中对象的isCase()方法,这里列举了以下实现isCase()方法的对象(注释中的是isCase()具体实现),你可以自定义改方法。

 

switch (10) {
    case 0:                println '==0'; break // Integer.equals(10)
    case 0..9:             println '[0,9]'; break // Range.contains(10)
    case [8, 9, 11]:       println 'in [8, 9, 11]'; break // Collections.contains(10)
    case Float:            println 'is Float'; break // 10 instanceof Float
    case { it % 2 == 1 }:  println 'odd'; break // Closure.call(10)
    case ~/\d\s/:          println "match /\\d\\w/"; break // Regular.matcher(10.toString()).matches(), Note: 10.toString() is called
    case '10':             println 'is string 10'; break  // String.equals(10.toString(); Note: 10.toString() called
    default:               println 'nothing'; break
} // output: is string 10

 

 注意:如果没有break,即使case条件为false,后面的println语句也会执行。

另外集合的grep方法也用isCase()方法取交集

7.2 循环

groovy里有for和while循环,没有do-while。

groovy的for可以遍历实现Iterable的类,已知的有:range/collection/map/array/iterator/enumeration。

除此之外,for还可以遍历一个文件的行,正则表达式的匹配项,一个对象,甚至是null(不会报错,当然也不会循环)

file = new File(/H:\programs\grails-2.2.3\INSTALL/)
for (line in file) {
    println line
}

for (n in null) {
    println 'this won\'t happen'
}

for (n in 10) {
    println n // output: 10
}

7.3 break,continue,return

这几个中断代码执行的逻辑和java一样,稍微要注意的是return在闭包中是可以省略的,默认返回最后一个表达式的结果,如果最后一个表达式没返回值,则返回null,另外就是循环中只是本轮循环结束,循环会继续。

7.4 try-catch-finally

异常捕获和java中是相同的。

 

分享到:
评论

相关推荐

    Groovy入门教程[参照].pdf

    Groovy 入门教程 Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法...

    Groovy入门教程.doc

    Groovy是一种基于Java虚拟机(JVM)的动态编程语言,它的设计目标是结合静态语言的效率和动态语言的灵活性。Groovy与Java语法相似,但更为简洁,减少了程序员的编码工作量,尤其适合快速开发和脚本编写。 在开发...

    groovy基础教程源码,很全面

    Groovy基础教程源码涵盖了Groovy语言的各个方面,是学习和理解Groovy语言的宝贵资源。下面将详细阐述Groovy的一些核心知识点。 1. **动态类型与静态类型**: Groovy支持动态类型,这意味着变量在声明时无需指定...

    Groovy中文教程

    "OFBiz开发者装备系列:0005"可能是一个关于OFBiz开发的学习资料系列,其中的"Groovy中文教程.pdf"可能是该系列的一部分,提供了详细的Groovy语言学习内容,适合对OFBiz开发感兴趣的Java开发者阅读。而"OFBiz其它资源...

    精通 Groovy 中文教程

    #### 五、Groovy的语法特点 **松散的Java语法**: - 在Groovy中,可以省略分号和修改符,使得代码更加简洁。 - 所有内容默认为public,除非明确指定了其他访问级别。 **简洁的代码风格**: - Groovy通过减少冗余...

    Groovy中文教程.pdf

    ### Groovy中文教程知识点概述 #### 一、Groovy简介与快速入门 ##### 1.1 使用Groovy - **Groovy** 是一种基于 **Java虚拟机 (JVM)** 的编程语言,它提供了简洁的语法,并且兼容Java的类库。Groovy能够直接运行在...

    groovy 1.7官方教程

    ### Groovy 1.7 官方教程知识点详解 #### 一、Groovy简介 - **定义**:Groovy是一种灵活且动态的语言,专为Java虚拟机(JVM)设计。 - **特点**: - **继承优势**:在保留Java强项的基础上,引入了更多来自Python...

    Groovy中文版教程

    7. **Grails**:Groovy的一个著名应用是Web框架Grails,它使用Groovy语言和DSL来加速开发过程,提供模型-视图-控制器(MVC)架构。 8. **Gradle**:构建工具Gradle的默认脚本语言就是Groovy,它结合了Ant的灵活性和...

    Groovy教程.7z

    Groovy 是一种基于Java平台的面向对象语言。Groovy 的语法和 Java 非常的相似,可以使用现有的 Java 库来进行 Groovy 开发。可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。

    Groovy语法系列教程之布尔(五).pdf

    本篇教程是关于Groovy编程语言中布尔(Boolean)类型的详细讲解,其中涉及到布尔类型的定义、使用以及Groovy对于布尔值操作的特殊规则。 首先,布尔类型是编程语言中一种基础的数据类型,用于表示逻辑上的真值,...

    Groovy Script 入门

    ### Groovy Script 入门知识点详解 #### 一、Groovy脚本简介 Groovy是一种灵活的面向对象的编程语言,它运行在Java平台上。由于其语法简洁且与Java高度兼容,因此对于Java开发者来说非常容易上手。Groovy不仅支持...

    Groovy入门教程(一).docx

    这篇Groovy入门教程由杨宏焱在2009年5月撰写,主要介绍了Groovy的基础知识和开发环境的配置。 首先,Groovy被定义为下一代的Java语言,它与Java兼容并运行在相同的平台上。Groovy的语法与Java相似,但更简洁,避免...

    Groovy DSL

    例如,Groovy可以通过定义新的语法结构来创建一个用于配置应用程序的DSL,这样不仅减少了编写常规配置文件的工作量,还增强了代码的表达力。 #### 使用Groovy构建DSL的优势 1. **代码量减少**:通过定义特定领域的...

    groovy基础语法.pdf

    Groovy支持常用的控制结构,包括if-else条件语句,for、while和do-while循环结构。这些控制结构的使用与Java类似,但Groovy的语法更为简洁。 switch语句: Groovy的switch语句可以使用任何类型作为表达式,包括字符...

    Groovy应用(基本操作)

    本文将深入探讨Groovy的基本操作,包括语法特性、数据类型、控制结构以及与其他Java工具的交互。 1. **语法特性** Groovy的语法比Java更加简洁,它支持方法和变量的自动声明,以及类似Python的缩进风格。例如,...

    groovy速查手册

    - **控制结构**:支持常见的流程控制语句如`if`、`for`、`while`等。 - **函数与方法**:支持定义函数和方法,包括闭包的使用,闭包是Groovy的一个强大特性,它允许创建可传递的匿名函数。 - **异常处理**:提供异常...

Global site tag (gtag.js) - Google Analytics