首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Groovy基本语法-注释及标识符

"冰冻三尺,非一日之寒"

中华文明上下五千年,老祖宗们在漫长岁月中积累沉淀的治理名言,文字已经锤炼得出神入化。诚如"冰冻三尺,非一日之寒"。学习是一个漫长积累的过程,每天进步一点点,日积月累,贵在坚持。

废话不多说,我们来开始学习Groovy语法。

Groovy的语法源自Java语言的语法,但是做了很多简化,从语言层面上就比Java敏捷。由于知识点比较多,篇幅有限,我们分成几部分来讲,主要是举一些例子,帮助童鞋们理解用法及加深印象。

注释

Groovy中的注释语法与Java语言语法完全一致,单行注释使用双斜线 // 来表示注释的开始,一直到行尾,即遇到换行符之前都是单行注释的内容,

同样多行注释使用 /* 符号开始, 之后所有的字符,包括换行符,直到遇到第一个 */ 符号之间的内容,都是多行注释。

例:

// 这是独立的单行注释

println "Hello world." // 跟随在语句后的单行注释

/* 只有一行的多行注释 */

/*

跨行的多行注释

*/

println /* 在语句中间的多行注释 */ "Hello world."

println "Hello world." /* 在行尾的多行注释 */

文档注释

如果使用Java做过开发的童鞋一定知道JavaDoc的重要性。平时我们查找Java API文档是看到的内容,就是JavaDoc工具从Java代码的文档注释提取并生成的。

Groovy同样也支持文档注释,语法也和JavaDoc一样, 使用 /** 开始,可以跨多行,直到遇到第一个 */ 符号结束。通常文档注释被用于描述类型定义,如类、接口、枚举、字段及属性的描述、方法定义等。

例:

/**

* 文件工具类,提供对目录、文件的基本操作。

* 本工具类简化文件及目录的创建、删除、更新等操作,也支持这些操作的监听事件及处理回调。

* @version 1.0

*/

class FileUtils {

/** 事件回调定义 */

def eventCallback

/**

* 递归删除指定路径下的文件及目录

* @param path 指定路径,必须是一个目录

* @return 被删除的文件总数

* @throws IOException 当无法进行删除操作,则抛出IOException

*/

long removeDir(String path) throws IOException {

...代码略

}

}

从例子可以看出,这是一个工具类,简化文件操作,并可以很明确地知道,有一个删除目录的方法,并且这个方法能够删除指定目录下包括子目录的所有文间。

所以说文档注释对于开发者有着非常重要的作用。当我们写出一个功能而需要别人调用的时候,清晰的文档会事半功倍。甚至长时间以后,开发者本身也会忘记当初自己代码为什么要这么写,所以要记住,代码是写给人看的,不是让机器看的,机器只是按照预定的逻辑执行而已。

开发的过程中,一定要写注释!

开发的过程中,一定要写注释!

开发的过程中,一定要写注释!

重要的事情说三遍!

Shell声明注释

在Unix/Linux/MacOS操作系统下,编写过脚本文件一定会记得脚本文件第一行要用

来声明此脚本的执行环境。同样,前面我们通过安装包安装了Groovy环境,并且在命令行已经可以执行了,以后就可以把Groovy脚本当作Shell脚本来用。

方法就是创建一个 shell 脚本,第一行声明为

这个脚本文件就可以按照Groovy语法来写。

例如我们创建一个名为 test.sh 的脚本文件并编辑,输入内容如下:

#!/usr/bin/env groovy

println "Hello world."

保存脚本后,将脚本修改为可执行属性,执行一下就可以看到结果了:

chmod +x test.sh

./test.sh

输出结果:

Hello world.

如果做运维的童鞋,是不是感觉眼前豁然开朗,感觉又找到了一件大杀器:)

标识符

Groovy中标识符以字母,美元符号或下划线开始,后面跟随字母或数字组成的。字符范围如下:

‘a’ 至 ‘z’ (小写ascii字母)

‘A’ 至 ‘Z’ (大写ascii字母)

‘\u00C0’ 至 ‘\u00D6’

‘\u00D8’ 至 ‘\u00F6’

‘\u00F8’ 至 ‘\u00FF’

‘\u0100’ 至 ‘\uFFFE’

注意,Java平台下的字母是UTF-8范围的,而不仅仅是ASCII 7的范围,也就是说,如果愿意,完全可以使用汉字作为标识符。

例如:

是完全没有错误的写法。

Groovy里规定,当在一个点符号后面,所有点关键字也是合法的标识符,通常这种用法用在一个对象上。

例如:

引用标识符

引用标识符出现在一个点式表达式的点后面,这点在Java语言中是不允许的。例如创建了一个user的对象,其中有一个loginId的属性,就可以通过这种方式来引用,这是一个有趣的特性,我们来展示一种用法:

为了说明这个用法,不涉及到这个特性到代码尽量用Java来定义了:

class User {

String loginId

String password

}

User user = new User()

user.'loginId' = 'a'

user.'password' = 'b'

String[] properties = new String[2]

properties[0] = 'loginId'

properties[1] = 'password'

for(String p : properties) {

println user."$"

}

assert user.loginId == 'a'

assert user.password == 'b'

这段代码一开始定义了一个User类,包含两个属性 loginId 及 password,然后使用这个类创建出一个 user 对象并对两个进行赋值,最后通过属性名获取对应的值。如果同样的功能在Java中,只能通过反射进行操作,大大增加了复杂度。而且这段代码并没有完全按照Groovy语法来写,如果完全按照Groovy语法来写,会更加简洁。

Groovy里,所有的字符串类型字面量都允许写到 . 符号后作为引用标识符:

user.'loginId'

user.'''loginId'''

user."loginId"

user."""loginId"""

user./loginId/

user.$/loginId/$

这几种字符串类型,是Groovy相对Java改进里很多的一个功能,使得字符串类型好用多了。

因篇幅原因,欲知详情,且听下回分解。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G0T7AL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券