Jenkins实践指南-04-Groovy基础知识03

2.4.5 操作符

2.4.5.1 常规算术操作符

    常见的算术操作符主要如下所示:

操作符 说明 示例
+ 相加 1+2=3
- 相减 1-2=-1
* 相乘 2*2=4
/ 相除 3/2=1.5
% 求余 3%2=1
** 求幂 3**2=9

2.4.5.2 赋值算术操作符

    常见的赋值算术操作符主要如下所示:

操作符 说明
+= 相加并赋值
-= 相减并赋值
*= 相乘并赋值
/= 相除并赋值
%= 求余并赋值
**= 求幂并赋值

2.4.5.3 关系操作符

    常见的关系操作符主要如下所示:

操作符 说明
== 等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
=== 绝对等于
!== 绝对不等于

2.4.5.4 逻辑操作符

    常见的逻辑操作符主要如下所示:

操作符 说明
&& 逻辑与
| | 逻辑或
! 逻辑非

2.4.5.5 三元操作符

    Groovy中的三元操作符,其基本语法如下所示:

判断条件?条件成立的结果:条件不成立的结果

该操作符功能等同于if-else

    示例结果如下所示:

def result=30>28?true:false
println "result is ${result}" // true

2.4.5.6 自增操作符

    常见的自增操作符主要如下所示:

操作符 说明
++ 自增
-- 自减

2.4.6 控制语句

2.4.6.1 if-else

    Groovy中的if-else基本语法结构如下所示:

if (表达式){
   // 执行语句
} else if (表达式) {
  // 执行语句
} else {
  // 执行语句
}
  • 示例一:
def env="test"

if(env == "test"){
  println "current env is ${env}"
} else if(env == "dev"){
  println "current env is ${env}"
} else if(env == "release"){
  println "current env is ${env}"
} else {
   println "unknown env"
}
  • 示例二:
def personInfo=[:]

if (personInfo.isEmpty()){
   println "personInfo is empty:${personInfo} "
} else {
   println "personInfo value :${personInfo} "
}

2.4.6.2 switch-case

    Groovy中的switch-case基本语法结构如下所示:

  • 语法一:常规用法
switch (变量值){
   case 条件1:
      // 执行语句或表达式
      break
   case 条件2:
      // 执行语句或表达式
      break
   case 条件3:
      // 执行语句或表达式
      break
   case [条件3,条件4,条件5]:
      // 执行语句或表达式
      break
   default:
     // 执行语句或表达式
}
  • 语法二:支持switch-case 表达式
def variable = swithc (变量值){
   case 条件1 -> "结果1"
   case 条件2 -> "结果2"
   case 条件3 -> "结果3"
   case 条件4 -> "结果4"
}
  • 示例一:
def env="test"

switch (env){
  case "test":
     println "current env is ${env}"
     break
  case "dev":
     println "current env is ${env}"
     break
  case "release":
     println "current env is ${env}"
     break
  default:
     println "unknown env"
}
  • 示例二:
def env="dev"

switch (env){
  case ["test","dev"]:
     println "current env is test or dev ,not release yet"
     break
  case "release":
     println "current env is ${env}"
     break
  default:
     println "unknown env"
}    println "unknown env"
}
  • 示例三:
def env="test"

def currentEnv=switch (env){
    case "test" -> "current env is test"
    case "dev"  -> "current env is dev"
    case "release" -> "current env is release"
}

println currentEnv

2.4.6.3 循环语句

2.4.6.3.1 for语句
  • 1.经典for语句

    经典for语句,其语法结构如下所示:

for ( init; condition; increment )
{
   // statement
}
  • 2.for-in

    for-in其语法结构如下所示:

for ( item in Object)
{
   // statement
}
2.4.6.3.2 while语句
  • 1.while

    while其语法结构如下所示:

while(condition){
  // statement
}
  • 2.do-while

    do-while其语法结构如下所示:

do {
  // statement
} while(condition)
2.4.6.3.3 示例

    示例如下所示:

  • for示例
def hello="Hello,Surpass"
def helloSplit=hello.split(",")
for(def i=0; i < helloSplit.length;i++) {
   println helloSplit[i]
}
  • for-in示例
def personInfoMap=[name:"Surpass",age:28,loc:"Shanghai"]

for (item in personInfoMap){
   println "Key is : ${item.key},value is :${item.value}"
}

def personInfoList=["Surpass",28,"Shanghai"]

for (item in personInfoList){
   println "current itme is ${item}"
}
  • while/do-while示例
def (endNumberA,endNumberB,sumA,sumB)=[100,100,0,0]

while (endNumberA > 0){
   sumA+=endNumberA
   endNumberA--
}
do{
   sumB+=endNumberB
   endNumberB--
}while (endNumberB > 0)

2.4.7 函数

2.4.7.1 基本定义

    Groovy中的函数基本语法如下所示:

def functionName(parasA,...,parasN=defaulValue){
   // 执行语句
   return parasA
}

    简要说明如下所示:

  • 函数定义使用关键字def
  • 函数的参数可以存在默认值,如果没有值传给参数,则使用默认值、

如果参数即存在非默认参数和默认参数,则默认参数必须位于参数列表的末尾进行定义

  • 函数的返回值,可以使用return返回,如果没有return语句,则默认使用最后一个表达式的值做为返回值

函数也可以一次性返回多个值,可以使用多变量赋值进行接收

2.4.7.2 函数示例

    示例如下所示:

  • 1.函数基本使用
def hello(name){
   return "Hello,${name}"
}

println hello("Surpass") // Hello,Surpass
  • 2.使用默认参数值
def hello(name,city="Shanghai"){
   return "Hello,${name},welcome to ${city}"
}

println hello("Surpass")          // Hello,Surpass,welcome to Shanghai
println hello("Surpass","Wuhan")  // Hello,Surpass,welcome to Wuhan
  • 3.使用不带return的返回值
def hello(name,city="Shanghai"){
   def testStr="Test no return "
   helloStr="Hello,${name},welcome to ${city}"
}

println hello("Surpass","Wuhan") // Hello,Surpass,welcome to Wuhan
  • 4.使用不带return的返回值
def hello(name,city="Shanghai"){
   helloStr="Hello,${name},welcome to ${city}"
   def testStr="Test no return "
}

println hello("Surpass","Wuhan") // Test no return
  • 5.返回多个值
def hello(name,city="Shanghai",from="Wuhan",to="Shenzen"){
   return [name,city,from,to]
}

def (name,city,from,to)=hello(name="Surpass")
println "name:${name},city:${city},from ${from},to ${to}" // name:Surpass,city:Shanghai,from Wuhan,to Shenzen
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容