`
ldb19890624
  • 浏览: 230118 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用Groovy思考 第四章 Groovy特性深入

阅读更多

用Groovy思考 第四章 Groovy特性深入

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

1. 断言

Java开发者常常使用JUnit或TestNG做单元测试,所以对断言是很清楚的。断言是用于验证假设的条件是否为真。在Groovy的断言中,如果假设的条件不为真,那么就会抛出java.lang.AssertionError异常。使用Groovy表达式来测试假设条件。

比如:
groovy:000> assert 1==2 : "One isn't Two"
ERROR java.lang.AssertionError:
One isn't Two. Expression: (1 == 2)
at groovysh_evaluate.run (groovysh_evaluate:2)
...

Java的断言也是这么写的:
assert 1==2 : "One isn't Two";

可见,Groovy的断言语法与Java的断言相同,Groovy的断言可以省略分号。

断言的使用技巧:
当你使用断言时,你应用包含一条消息。此消息可以帮助其他人维护和理解你的代码,理清你的意图。

2. 强断言

Groovy的断言assert关键字仅仅是检查表达式是否为真。如果为假,断言仅仅告诉开发者,表达式不成立,以及表达式使用的变量值,除此以外什么都没有。如果使用强断言,断言的输出会提供表达式的每一个子表达式的可视化展现。下面我将详细说明强断言。

groovy:000> assert 1==1: "One isn't Two"
===> null
groovy:000> assert new File('HelloWorld.txt')==new File('Hello.txt')
ERROR org.codehaus.groovy.runtime.powerassert.PowerAssertionError:
assert new File('HelloWorld.txt')==new File('Hello.txt')
| | |
HelloWorld.txt | Hello.txt
false
at groovysh_evaluate.run (groovysh_evaluate:2)
...

断言可以方便地对代码进行测试。

3. Strings

Groovy支持两种字符串:常规的Java字符串和GStrings。
在Groovy中,用单引号或双引号括起来的字符串是java.lang.String类的一个实例,

GStrings是groovy.lang.GString类的一个实例,它允许在文本中包含占位符。GStrings并不是String的子类,因为String类是final类型,而且是不能被扩充的。
GString很像普通的字符串,但是他允许在其内使用${..}嵌入变量。如果内嵌的变量只是占位符,那么可以省略{}花括号。

Groovy支持一些编程语言如Perl或Ruby所谓的字符串插入(String Interpolation)。字符串插入是字符串内的表达式或变量的替代。如果你熟悉Unix Shell编程或Ruby、Perl编程,那么你应该很熟悉这一点。

Java不支持字符串插入,你必须手动的进行值连结。

Java的字符串操作例子:
String name = "Jim";
String helloName = "Hello " + name;
System.out.println(helloName);

如果是使用Groovy的GString,那么可以这样:
groovy:000> str1 = "Li Sir"
groovy:000> str2 = "Hello "
groovy:000> println "$str2$str1"
Hello Li Sir

可见,正如前面所讲,如果内嵌的变量只是占位符,那么可以省略{}花括号。

当Groovy看到表达式内的内嵌变量时,Groovy会构造一个org.codehaus.groovy.runtime.GStringImpl来代替java.lang.String。当访问GString时,表达式会被重新计算。
注意,你可以在${}内包含任意有效的Groovy表达式,可以是方法调用或变量名。

4. 单行字符串

单行字符串可以用单引号或双引号包围,但是两者是有区别的。
单引号包围的表达式,里面的字符串插值是不会被识别的。双引号包围的表达式正好相反。

举例:
name = "LiSir"
s1 = 'Hello $name'
println s1

输出:
Hello $name

例子:
name = "LiSir"
s1 = "Hello $name"
println s1

输出:
Hello LiSir

可见,由双引号定义的字符串,其内嵌的表达式会被解释。

5. 多行字符串

Groovy支持字符串跨越多行,多行字符串由三个双引号或者三个单引号定义。
多行字符串对于创建模板(如XML模板)或内嵌的文档(SQL语句、HTML等)是非常有用的。还有很多用途。比如,可以使用多行字符串和字符串插值建立电子邮件的主体内容。

比如:
def name = "Jim"
def multiLineQuote = """
Hello, ${name}
This is a multiline string with double quotes
"""
println multiLineQuote
println multiLineQuote.class.name

def multiLineSingleQuote = '''
Hello, ${name}
This is a multiline string with single quotes
'''
println multiLineSingleQuote
println multiLineSingleQuote.class.name

输出:
Hello, Jim
This is a multiline string with double quotes
org.codehaus.groovy.runtime.GStringImpl

Hello, ${name}
This is a multiline string with single quotes

java.lang.String
分享到:
评论

相关推荐

    groovy-3.0.9-API文档-中文版.zip

    赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...

    groovy入门经典,groovyeclipse 插件

    groovy入门经典,groovyeclipse 插件

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    Java中使用Groovy的三种方式

    Java中使用Groovy的三种方式,详细见我的博客。

    Groovy v2.4.13官方版

     Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...

    [Groovy] Making 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--下一代开发语言

    Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...

    Java调用Groovy,实时动态加载数据库groovy脚本

    Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署

    Groovy DSL

    研究表明,使用Groovy比使用Java写程序,代码量少3-10倍。 DSL是新一代基于领域设计专用语言。由于Groovy的超级灵活性,你可以使用Groovy快速编写基于领域的小语言,从而将编码量进一步减少,程序更容易维护。越少...

    Groovy轻松入门—搭建Groovy开发环境

    Groovy轻松入门—搭建Groovy开发环境 Groovy轻松入门—搭建Groovy开发环境

    Groovy-3.0.jar

    Groovy jar包 3.0.

    groovy-2.3.6-installer

    groovy-2.3.6-installer windows安装版本

    apache-groovy-sdk-2.4.11

    编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,您将轻松完成本教程的学习。最重要的是,您将学会如何在日常 Java 应用程序开发中联合使用 Groovy 和 ...

    Groovy入门经典.pdf

     本书是有关Groovy的第一本正式出版物,作者KennethBarclay和JohnSavage介绍了Groovy开发的所有主要领域,并解释了这种创新性的编程语言给Java平台赋予的动态特性。阅读本书只要求具备Java编程的一般性知识。不管你...

    Groovy学习笔记 PDF版

    Groovy

    groovy和Java相互调用1

    Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该

    Java Groovy结合使用

    概述主要介绍Java、spring与groovy结合使用,高清英文版本

    groovy-3.0.7.msi

    groovy

    [Groovy入门]第四讲.数据搜索功能与正则表达式

    [Groovy入门]第四讲.数据搜索功能与正则表达式

Global site tag (gtag.js) - Google Analytics