博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gradle升仙路之Groovy(1)
阅读量:6390 次
发布时间:2019-06-23

本文共 2473 字,大约阅读时间需要 8 分钟。

  hot3.png

构建工具发展史:Ant -- > Maven --> Gradle

Gradle 由Groovy语言编写,因此基于Groovy环境运行。

 

1、Grovvy简介

1.1 场景

Groovy也是另外一种为DSL语言domain specific language,脚本编程语言,matlab是DSL语言的一种,专门用来计算的,还有UML建模语言,在建模方向上有专供。所以DSL语言只用于某一特定领域,也被称为领域语言。

1.2 理解

基于JVM开发的语言,所以能够使用java的库,与java完美结合

1.3 安装Groovy环境

点击这里--》

点击这里--》

1.4 自我理解

和java很像,可以创建类同于java的一个类,如下:

2daf5c9284ddd578fc7d69984943b7bf5d2.jpg

所以groovy的工程和java很相似,但是看上面的截图大家会发现,"public"还有这个";"都是灰色的,表示可有可无,这就是groovy的某一个与java区别的地方,同样我们也可以把String[] 参数类型省略,那么我们省略之后也能输出同样的表达结果:

1d7f3047e0d44de06c3eb85bab55e5414c8.jpg

还有一点就是,它与lua语言也有点类似,那就是可以作为脚本语言,那么作为脚本语言我们也可以不需要class的声明,如下:

f1676e0873a5924883a3419236b8cbe67ab.jpg

同样的结果,所以我们对这个简单的了解之后我们进入基础语法的讲解,毕竟groovy虽然与java差不多,但还是有些不同的地方。

1.5 groovy基础语法

1.5.1 变量的类型

对象类型(没有int double类型,都会转换成Integer,Double)

1.5.2 变量的定义

1.5.1 强类型、弱类型

强类型定义就是类似与java的形式,String name ="mujiutian",而弱类型定义的话,我们类似于java10的var类型,有系统自己转换为自己认为的数据类型,如下

11a6a9efc2dbf4b67df363538696fd24f3d.jpg

1.5.2 GString可扩展表达式

a87e124ae184d83b92af0e58a64c5678a38.jpg

由上我们可以看到数据类型就是GString,这个就是可扩展的类型,然后我们可以用'' 表示,同样可以用""表示。

1.5.3 字符串普通常见方法

def name = "mujiutian"def name1 = "osc"def name2 = 'oscChina'//name中间。两边字符串为M,达到11长度println name.center(11,"M")//在左边添加2的字符串,达到9的长度println name1.padLeft(9,"2")//比较两个字符串大小println name.compareTo(name1)//比较两个字符串大小,和compareTo一样println name > name1//获取第一个字符println name[0]//获取0-3的字符println name[0..3]//两个字符串相减,前者必须包含后者println name2.minus(name1)//和上面一样println name2 - name1//反过来println name2.reverse()println name2.capitalize()

结果为:

MmujiutianM222222osc-2falsemmujiChinaChinaanihCcsoOscChina

 1.5.4 switch语句

def var = 1.5def resultswitch (var){    case "soo":        result = "this is soo"        break    case Integer:        result = "this is int type"        break    case [5,6,7,'in']:        result = "hah"        break    case 10..90:        result ='dsk'        break    case BigDecimal:        result ='this is bigdecimal'        break    default:        break}println result

结果为:

this is bigdecimal

1.5.5 for循环

//直接循环def sum1 = 0for (i in 0..9){    sum1 +=i}//list循环def sum2 =0for (i in [1,2,3,4,5,6,7]){    sum2 +=i}//map循环def sum3 =0for (i in ['key1':1,'key2':2,'key3':3]){    sum +=i.value}

1.6 groovy闭包,类似于java的lambda表达式

1.6.1 闭包概念:一个代码块

1.6.2 闭包参数:一个或者多个

1.6.3 闭包返回值:把println 换成return 

def clouser = {String name -> return "hello ${name} " }def result = clouser.call('groovy')println(result)

闭包的用法类似与java8中的lambda表达式,如下:

int fab(int num){    int result = 1    //从1增加到num,downto(1,..)是下降到1    1.upto(num,{num1 -> result *= num1})    return result}int cal(int num){    int result =0    //起始值0    num.times {        num1 -> result*=num1    }}

1.6.4闭包关键变量

this、owner、delegate

 

 

转载于:https://my.oschina.net/mdxlcj/blog/1943686

你可能感兴趣的文章
【DEV GridControl】怎样使GridView中满足某个条件的行可编辑,其余行不可编辑?...
查看>>
一只年轻而倒悬的梨
查看>>
解决time_wait过多的问题
查看>>
技术转载:Jni学习一:了解Jni
查看>>
vue教程2-07 自定义指令
查看>>
Node.js之循环依赖
查看>>
python3调用阿里云短信服务
查看>>
Linux-百度云之AccleriderMini使用
查看>>
bootstrapTable refresh 方法使用简单举例
查看>>
2、TestNG+Maven+IDEA环境搭建
查看>>
maven插件运行过程中自动执行sql文件
查看>>
New UWP Community Toolkit - XAML Brushes
查看>>
C# ==、Equals、ReferenceEquals 区别与联系 (转载)
查看>>
layer弹出层的关闭问题
查看>>
LeetCode——3Sum & 3Sum Closest
查看>>
netstat详解
查看>>
微信小程序 --- e.currentTarget.dataset.id 获取不到值
查看>>
Introducing stapbpf – SystemTap’s new BPF backend
查看>>
详细介绍MySQL/MariaDB的锁
查看>>
0603-Zuul构建API Gateway-通过Zuul上传文件,禁用Zuul的Filter
查看>>