Groovy in Gradle
使用Gradle需要了解的Groovy语法:
基础
- 语句末尾不需要写分号
- 支持使用def定义动态数据类型变量
- 没有基本类型,全部使用包装类型
- 方法变化
- 使用def定义方法,可以不指定返回类型、参数类型,直接返回最后一行
- 方法调用可以不写(),不过建议加上
- 不管有没有返回值,Groovy中返回的都是Object类型
- 字符串:支持单引号、双引号、三引号,双引号的可以解析插值,三引号可以带格式输出
- 不用写getter/setter,会自动创建,调用时
a.xxx
,a.setXxx(xx)
- Class类型可以省略
.class
==
就是表示equals
,x.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
---
本文来自博客园,作者:Bingmous,转载请注明原文链接:https://www.cnblogs.com/bingmous/p/18151093
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?