(2.2.9.1)Groovy一些前提知识
2016-04-25 20:30
323 查看
为了后面讲述方面,这里先介绍一些前提知识。初期接触可能有些别扭,看习惯就好了。
Groovy 注释标记和 Java 一样,支持//或者/**/
Groovy 语句可以不用分号结尾。Groovy 为了尽量减少代码的输入,确实煞费苦心
Groovy 中支持动态类型,即定义变量的时候可以不指定其类型。Groovy 中,变量定义可以使用关键字 def。注意,虽然 def 不是必须的,但是为了代码清晰,建议还是使用 def 关键字
函数定义时,参数的类型也可以不指定。比如
除了变量定义可以不指定类型外,Groovy 中函数的返回值也可以是无类型的。比如:
其实,所谓的无返回类型的函数,我估计内部都是按返回 Object 类型来处理的。毕竟,Groovy 是基于 Java 的,而且最终会转成 Java Code 运行在 JVM 上
函数返回值:Groovy 的函数里,可以不使用 return xxx 来设置 xxx 为函数返回值。如果不使用 return 语句的话,则函数里最后一句代码的执行结果被设置成返回值。比如
注意,如果函数定义时候指明了返回值类型的话,函数中则必须返回正确的数据类型,否则运行时报错。如果使用了动态类型的话,你就可以返回任何类型了。
Groovy 对字符串支持相当强大,充分吸收了一些脚本语言的优点:
最后,除了每行代码不用加分号外,Groovy 中函数调用的时候还可以不加括号。比如:
注意,虽然写代码的时候,对于函数调用可以不带括号,但是 Groovy 经常把属性和函数调用混淆。比如
![](http://wiki.jikexueyuan.com/project/deep-android-gradle/images/4.jpg)
所以,调用函数要不要带括号,我个人意见是如果这个函数是 Groovy API 或者 Gradle API 中比较常用的,比如 println,就可以不带括号。否则还是带括号。Groovy 自己也没有太好的办法解决这个问题,只能兵来将挡水来土掩了。
好了,了解上面一些基础知识后,我们再介绍点深入的内容。
Groovy 注释标记和 Java 一样,支持//或者/**/
Groovy 语句可以不用分号结尾。Groovy 为了尽量减少代码的输入,确实煞费苦心
Groovy 中支持动态类型,即定义变量的时候可以不指定其类型。Groovy 中,变量定义可以使用关键字 def。注意,虽然 def 不是必须的,但是为了代码清晰,建议还是使用 def 关键字
def variable1 = 1 //可以不使用分号结尾 def varable2 = "I am a person" def int x = 1 //变量定义时,也可以直接指定类型
函数定义时,参数的类型也可以不指定。比如
String testFunction(arg1,arg2){//无需指定参数类型 ... }
除了变量定义可以不指定类型外,Groovy 中函数的返回值也可以是无类型的。比如:
//无类型的函数定义,必须使用 def 关键字 def nonReturnTypeFunc(){ last_line //最后一行代码的执行结果就是本函数的返回值 } //如果指定了函数返回类型,则可不必加 def 关键字来定义函数 String getString(){ return "I am a string" }
其实,所谓的无返回类型的函数,我估计内部都是按返回 Object 类型来处理的。毕竟,Groovy 是基于 Java 的,而且最终会转成 Java Code 运行在 JVM 上
函数返回值:Groovy 的函数里,可以不使用 return xxx 来设置 xxx 为函数返回值。如果不使用 return 语句的话,则函数里最后一句代码的执行结果被设置成返回值。比如
//下面这个函数的返回值是字符串"getSomething return value" def getSomething(){ "getSomething return value" //如果这是最后一行代码,则返回类型为 String 1000 //如果这是最后一行代码,则返回类型为 Integer }
注意,如果函数定义时候指明了返回值类型的话,函数中则必须返回正确的数据类型,否则运行时报错。如果使用了动态类型的话,你就可以返回任何类型了。
Groovy 对字符串支持相当强大,充分吸收了一些脚本语言的优点:
1 单引号''中的内容严格对应 Java 中的 String,不对$符号进行转义 def singleQuote='I am $ dolloar' //输出就是 I am $ dolloar 2 双引号""的内容则和脚本语言的处理有点像,如果字符中有$号的话,则它会$表达式先求值。 def doubleQuoteWithoutDollar = "I am one dollar" //输出 I am one dollar def x = 1 def doubleQuoteWithDollar = "I am $x dolloar" //输出 I am 1 dolloar 3 三个引号'''xxx'''中的字符串支持随意换行 比如 def multieLines = ''' begin line 1 line 2 end '''
最后,除了每行代码不用加分号外,Groovy 中函数调用的时候还可以不加括号。比如:
println("test") ---> println "test"
注意,虽然写代码的时候,对于函数调用可以不带括号,但是 Groovy 经常把属性和函数调用混淆。比如
def getSomething(){ "hello" } getSomething() //如果不加括号的话,Groovy 会误认为 getSomething 是一个变量。比如:
![](http://wiki.jikexueyuan.com/project/deep-android-gradle/images/4.jpg)
所以,调用函数要不要带括号,我个人意见是如果这个函数是 Groovy API 或者 Gradle API 中比较常用的,比如 println,就可以不带括号。否则还是带括号。Groovy 自己也没有太好的办法解决这个问题,只能兵来将挡水来土掩了。
好了,了解上面一些基础知识后,我们再介绍点深入的内容。
相关文章推荐
- 5--指针与数组(下)
- 无人机学习第一波
- [CODEVS1090][NOIP2013]加分二叉树(树形dp)
- 如何更改workbench的快捷键
- HDU1576 A/B (解法二)
- Educational Codeforces Round 12 D. Simple Subset
- c++第四次作业
- iOS边练边学--多线程练习的多图片下载 以及 使用第三方框架(SDWebImage)的多图片下载
- 线程同步与互斥之条件·变量
- 定时自动启动任务crontab命令用法
- poj 2373(单调队列优化dp)
- (2.2.9)Groovy 介绍
- 对UIView 实例方法的探索
- HBase总结(十一)hbase Java API 介绍及使用示例
- STEM教育 or steam教育 art
- D The Lucky Week
- HDU 1283 最简单的计算机(switch+string)
- 在一个UILabel中实现不同的字体和颜色
- RocketMQ 部署
- Solr REST操作:增删改查