码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Groovy语法大全


    文章目录

    • 一、Win10安装groovy环境
      • `1.打开groovy自带的编辑器`
    • 二、数值和表达式
      • `1.整数运算符`
      • `2.混合运算`
      • `3.赋值`
        • 第一次使用变量,需要用def去声明变量
        • 变量被称作标识符,标识符命名规则
        • 判断变量是否为整数
    • 三、字符串和正则表达式
      • `1.字符串索引`
      • `2.基本操作`
      • `3.正则表达式`
      • `4.字符串替换`
      • `5.常用操作`
        • 字符串分割
        • 判断字符串是否为数字
    • 四、列表、映射和范围
      • `1.列表`
        • 列表方法
        • 遍历列表
        • 以逗号分隔,存到列表中
        • 把列表元素拼接成字符串
      • `2.映射(类似Python的字典)`
        • 映射方法
        • 映射取值方法对比
        • 遍历映射
      • `3.范围`
        • 包含范围的示例
        • 范围方法
    • 五、基本输入输出
      • `1.基本输出`
      • `2.格式化输出`
      • `3.简单输入`
    • 六、学习案例1
    • 七、方法
      • 一个简单的方法定义
    • 八、判断语句
      • if
    • 九、文件
      • 写文件
    • 十、闭包
      • 一个简单的参数化闭包
      • 使用隐参数it
    • 十一、对象
      • 追加datas这个Map对象到parameter
    • 十二、异常处理
      • `捕获异常,并抛出异常`
      • `不抛出异常`
    • 十三、选择语句
    • 十三、其它
      • 查看数据类型


    参考书籍《GROOVY入门经典》

    一、Win10安装groovy环境

    参考文章:https://blog.csdn.net/mathew_leung/article/details/87922869

    1.打开groovy自带的编辑器

    DOS命令行输入groovyconsole
    在这里插入图片描述

    二、数值和表达式

    1.整数运算符

    在这里插入图片描述

    2.混合运算

    在这里插入图片描述

    3.赋值

    第一次使用变量,需要用def去声明变量

    def conut = 0			#声明并初始化变量
    count = conut + 1		#在当前值的基础上加1
    
    • 1
    • 2

    变量被称作标识符,标识符命名规则

    在这里插入图片描述

    判断变量是否为整数

    if(value instanceof Integer) {
    	println "是整型"
    } else {
    	println "不是整型"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、字符串和正则表达式

    1.字符串索引

    在这里插入图片描述
    在这里插入图片描述

    2.基本操作

    在这里插入图片描述

    3.正则表达式

    =~表示模糊匹配;==~表示精确匹配

    4.字符串替换

    webVersion = webVersion.replaceAll("\n","")		//替换字符串后面的换行符
    def test = url.replaceAll("http(s)?:","")		//替换http:或者https:为空
    
    • 1
    • 2

    5.常用操作

    字符串分割

    split()方法不支持同时对多个字符进行分割,tokenize()支持
    在这里插入图片描述

    Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别

    判断字符串是否为数字

    def num = '1106502'
    if(! num.isInteger() && ! num.isFloat()) {
          println "不是数字"
      }else{
          println "是数字"
      }
      println num
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    VALUE.contains('abc')		//字符串包含abc
    VALUE.startsWith('test')	//以test开头为真
    VALUE.endsWith('.txt')		//VALUE字符串以.txt结尾为真
    
    • 1
    • 2
    • 3

    四、列表、映射和范围

    参考文章:
    Groovy的List(列表)操作

    1.列表

    在这里插入图片描述

    def numbers = [11, 22]		#定义一个新列表
    numbers << 13				#[11, 22, 13]
    numbers + [14, 15]			#[11, 22, 13, 14, 15]
    numbers - [11]				#[22, 13]
    
    • 1
    • 2
    • 3
    • 4

    列表方法

    def arr = new ArrayList()			//定义一个空列表
    def HostIpList = []					//定义一个空列表
    alist.contains(4)					//检查4是否在alist列表中
    alist.remove('b')					//删除列表中的b元素
    HostIpList = strings.split("\n")		//以换行符进行分割,返回一个列表
    def Flag = fileExists '/data/host.yaml'			//存在返回真,不存在返回假
    alist -= [1]	//删除列表alist中值为1的元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    遍历列表

     for(ip in ipList) {		//for里面的变量ip是个局部变量
          println ip
      }
    或者
    [1, 2, 3].each {println it}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    以逗号分隔,存到列表中

    def nfs_server = "192.168.1.1,192.168.1.2"
    def nfsIPList = nfs_server.split(",")
    
    • 1
    • 2

    把列表元素拼接成字符串

    string1 = alist[0] + '-' + alist[1]
    
    • 1

    2.映射(类似Python的字典)

    简单的映射在这里插入图片描述

    映射方法

    在这里插入图片描述
    在这里插入图片描述

    映射取值方法对比

    def paramMap = ["a":1, "b":2]
    
    • 1

    paramMap.a和paramMap.get[‘a’]都可以获取a的值

    如果paramMap中没有a,paramMap.a返回null,paramMap.get[‘a’]会抛出异常

    遍历映射

    //方法一
    def paramMap = ["a":1, "b":2]
    paramMap.each{entry ->
     	def key = entry.key
        def value = entry.value
        println key
        println value
    }
    //方法二
     for (Map.Entry<String, List> entry:paramMap .entrySet()){
        println entry.getKey()
        println entry.getValue()
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    def map1 = [:]		//定义空映射
    
    • 1

    3.范围

    包含范围的示例

    在这里插入图片描述

    范围方法

    在这里插入图片描述

    五、基本输入输出

    1.基本输出

    println "Hello World!"
    
    • 1

    2.格式化输出

    在这里插入图片描述

    3.简单输入

    在这里插入图片描述

    六、学习案例1

    def library =[ 'Ken' : ['Groovy','UML'],
                    'John' : ['java']
                  ]
    library['Sally'] = ['Basic']
    library['John'] = library['John'] << 'OOD'
    library['Ken'].contains('UML')     
    library.keySet().sort()
    library['Ken'].size
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    七、方法

    一个简单的方法定义

    def greetings() {
        println 'Hello World!'
    }
    greetings()
    
    • 1
    • 2
    • 3
    • 4

    八、判断语句

    if

    if(表达式){
    	cmd
    } else {
    	cmd
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    九、文件

    写文件

    outFile = new File(‘/tmp/t1.txt’)
    outFile.append('Hello World'+'\n') 
    
    • 1
    • 2

    十、闭包

    表示一段可执行的代码库,类似于方法(函数)。

    一个简单的参数化闭包

    def clos={param -> println "Hello ${param}"}
    clos('World')
    
    • 1
    • 2

    解释:

    param为形参,World为实参
    
    • 1

    使用隐参数it

    def clos={println "Hello ${it}"}
    clos.call('World')
    
    • 1
    • 2

    十一、对象

    追加datas这个Map对象到parameter

    def parameter = new HashMap()
    parameter.putAll(datas)
    
    • 1
    • 2

    十二、异常处理

    捕获异常,并抛出异常

    timestamps
    {
        try {
    	    语句块
    	}//try
    	catch(Exception err) {
    		throw new Exception("*******Caught an exception: ${err}")
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    不抛出异常

    try {
       sh 'lsd'
    } catch (ignored) {
        println 'not throw exception'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    十三、选择语句

    switch (type) {
             case "mysql":
    			println("mysql数据库")
                 break
             case "oracle":
                 println("oracle数据库")
                 break
             default:
                 println("前面没有匹配下,执行default下面的语句")
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    十三、其它

    查看数据类型

    println(alist.getClass())
    
    • 1
  • 相关阅读:
    非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解
    17K star,一款开源免费的手机电脑无缝同屏软件
    SAP ABAP结构与内表的创建
    MySQL数据库之存储引擎
    使用 PyTorch 搭建网络 - predict_py篇
    【目标跟踪】|单目标跟踪指标
    Android 的定位分层架构
    (六)RabbitMQ第二种模型:工作模型(Work Queues)
    高等数学基础概念的Python开发实现
    高防IP是什么意思?
  • 原文地址:https://blog.csdn.net/anqixiang/article/details/127447471
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号