首页 > 其他分享 >Groovy in Gradle

Groovy in Gradle

时间:2024-04-23 10:12:18浏览次数:14  
标签:Groovy 闭包 -- 888 Gradle println data def

目录

使用Gradle需要了解的Groovy语法:

基础

  • 语句末尾不需要写分号
  • 支持使用def定义动态数据类型变量
  • 没有基本类型,全部使用包装类型
  • 方法变化
    • 使用def定义方法,可以不指定返回类型、参数类型,直接返回最后一行
    • 方法调用可以不写(),不过建议加上
    • 不管有没有返回值,Groovy中返回的都是Object类型
  • 字符串:支持单引号、双引号、三引号,双引号的可以解析插值,三引号可以带格式输出
  • 不用写getter/setter,会自动创建,调用时a.xxxa.setXxx(xx)
  • Class类型可以省略.class
  • ==就是表示equalsx.is(x)判断是不是同一个引用
  • 支持**运算符,表示多少次方
  • switch变化:
def num = 5.21

switch (num) {
   case [5.21, 4, "list"]:
       return "ok"
       break
   default:
       break
}
  • Groovy 支持三种集合类型:

List --> 链表,对应 Java 中的 List 接口,一般用 ArrayList 作为真正的实现类
Map --> 哈希表,对应 Java 中的 LinkedHashMap
Range --> 范围,它其实是 List 的一种拓展

// --> list 
def data = [666,123,"AA"]
data[0] = "BB"
data[100] = 33
println("size --> " + data.size()) // 101个元素

----------------------我是分割线------------------------

// --> map
def key = "888"
def data = ["key1": "value", "key2": 111, (key): 888] // 使用 () key 使用动态值

data.key1
data.["key1"]
data.key2 = "new"

def name2 = "name"
def age2 = 578
data.put(name2, age2)

println("size --> " + data.size()) // 4
println("map --> " + data) // [key1:value, key2:new, 888:888, name:578]
println("key--> " + data.get(key)) // key--> 888

----------------------我是分割线------------------------

// --> range
def data = 1..10
data.getFrom()
data.to()

println("size --> " + data.size())
println("range --> " + data) // range --> 1..10

闭包

Groovy中的闭包是一个开放,匿名的代码块,可以接受参数,返回值并分配给变量

// 标准写法,method1 就是一个闭包 (>▽<)
def method1 = { name,age ->
    name + age
}

// 调用方式
method1.call(123,888)
method1(123,888)

// 默认有一个 it 表示单个参数
def method3 = { "Hello World!$it" }

// 强制不带参数
def method2 = {  ->
    name + age
}

// 作为方法参数使用
def to(x, y,Closure closure) {
    x + y + closure(111)
}

闭包委托

闭包代码需要转换为.class代码执行,因此需要传递的参数就会赋值给delegate属性:

class Person {
    String name
    int age
}    
 
def cc = {
	name = "hanmeimei"
	age = 26
} 

Person person = new Person()
cc.call(person)

其中,cc是闭包,cc.call(person)是调用闭包,换个写法:

cc.delegate = person
cc.call()

可以直接使用的对象

println(rootProject.projectDir.path/absolutePath)
println(rootProject.rootDir.path)
println(rootProject.buildDir.path)

def file = project.file(fileName) //在当前项目下生成文件

其他groovy api

https://groovy-lang.org/groovy-dev-kit.html

标签:Groovy,闭包,--,888,Gradle,println,data,def
From: https://www.cnblogs.com/bingmous/p/18151093

相关文章

  • Groovy Document 4.0.14
    目录下载安装与Java的区别默认的imports多方法或者叫运行时分发数组初始化包可见性自动资源管理内部类lambda表达式和方法引用操作符GStringsString和字符字面量==的行为原生类型与包装类型使用@CompileStatic原生数据类型优化正负零的边界情况约定其他的关键字官方文档:https://......
  • Spring boot中使用groovy
    groovy是当做一个脚本来用的,也可以从数据库加载代码做一些动态数据处理。搭建一个springboot环境,pom.xml中编辑器和jar包,springboot是2.1.6.RELEASE<dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.4.7</vers......
  • 如何使用groovy反序列化json
    使用Groovy反序列化JSON可以通过以下步骤实现:导入相关的Groovy库:在Groovy脚本或Groovy项目中,首先需要导入相关的Groovy库,以便使用JSON反序列化的功能。可以使用以下代码导入库:importgroovy.json.JsonSlurper复制创建JsonSlurper对象:JsonSlurper是Groovy提供的一个用于解......
  • Gradle Reference
    目录安装手动安装介绍Gradle是什么快速开始案例构建java应用官网:https://gradle.org/安装安装过程:https://gradle.org/install/需要有jdk环境,jdk8以上,java-version验证。兼容性:https://docs.gradle.org/7.6.1/userguide/compatibility.html手动安装安装完整版,包含doc和sou......
  • WPS二次开发系列:Gradle版本、AGP插件与Java版本的对应关系
    背景最近有体验SDK的同学反馈接入SDK出现报错,最终定位到原因为接入的宿主app项目的gradle版本过低导致,SDK兼容支持了android11的特性,需要对应的gradle插件为支持android11的版本。现象解决方案将gradle版本升级至支持android11的插件版本即可,对此google官方的引文如下......
  • springboot 与jdk与maven与gradle 对应版本
      SystemRequirementsSpringBoot3.2.4requires Java17 andiscompatibleuptoandincludingJava22. SpringFramework6.1.5 oraboveisalsorequired.Explicitbuildsupportisprovidedforthefollowingbuildtools:BuildToolVersionMa......
  • gradle不同版本下载太慢---腾讯做了国内镜像可以直接下载
    嫌弃官网下载速度太慢的同学,可以点击下面的连接进行下载:https://mirrors.cloud.tencent.com/gradle/截图如下:有了速度如此之快的国内镜像,那么就可以应用到自己的项目中去,方法如下:1.进入到自己工程目录下的wrapper文件夹。2.编辑gradle-wrapper文件使用https://mirrors.clo......
  • groovy 字符串、json 动态拼接内容
    1.字符串拼接defids=[21321,3445,3456];defsize=ids.size();vars.put("skuNum",size);logs.add('sku数量:'+size);StringBuffersb=newStringBuffer();defrandom=newjava.util.Random();for(inti=0;i<size;i++){defskuId=......
  • 【Gradle测试】OOM问题解决方案
    文章目录概要问题场景问题复现解决方案相关资源概要分享开发过程中遇到的Gradle测试OOM问题的解决方案。问题场景当运行Gradle测试的时候,如果测试用例比较多,并且运行过程中创建的对象所占用的内存超过了Gradle测试默认的最大内存,则会发生OOM。问题复现由于本地......
  • 与Android Gradle Plugin对应的Gradle版本和Android Studio版本
    Gradle版本和AndroidGradlePlugin对应版本Gradle版本AndroidGradlePlugin版本8.4(Alpha版)8.6-rc-18.38.48.28.28.18.08.08.07.47.57.37.47.27.3.37.17.27.07.04.2.0+6.7.1AndroidStudio版本和AndroidGradlePlugin对应版本AndroidStudio版本AndroidGradlePlugi......