Groovy 语言快速入门
30分钟groovy快速入门并掌握
特性
- Groovy 可以与 Java 语言无缝对接
- 调用的方法将在运行时被选择
- Groovy非常容易集成在Java环境中,利用其动态性来做规则引擎、流程引擎、动态脚本环境,非常适合那些不不需要经常发布但又经常变更的场景下使用
语法
基础语法
#!/usr/bin/env groovy
import java.util.List as jurist
字符串:
def str = 'abc'
def str = "i am $name"
GString- 可以用\来构建多行的字符串,像bash shell中一样
- 可以使用”“”来构建多行字符串,像scala中一样
def c = 'a' as char
list:
def numbers = [1, 2, 3]
coll.add("Python")
coll << "Smalltalk"
coll[5] = "Perl"
assert coll[1] == "Java"
assert "Java" in coll
assert numbers + 5 == [1,2,3,4,5]
assert numbers - [2,3] == [1,4]
assert numbers.join(",") == "1,2,3,4"
assert [1,2,3,4,3].count(3) == 2
assert ["JAVA", "GROOVY"] == ["Java", "Groovy"]*.toUpperCase()
array:
def numArr = [1, 2, 3] as int[]
map:
def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']
colors.red
colors['red']
range:
def range = 0..5
assert (0..5).collect() == [0, 1, 2, 3, 4, 5]
assert ('a'..'d').collect() == ['a','b','c','d']
def pattern = ~/fo*/
assert str =~ pattern
artist?.toUpperCase()
防止空指针函数的最后语句值不需要return
== 等价于 Java 中的equals方法
with
1
2
3
4
5
6
7server.with {
name = application.name
status = status
sessionCount = 3
start()
stop()
}所有类型都能转成布尔值
if (name != null && name.length > 0) {}
==if(name){}
流程控制
1 | def x = 1.23 |
函数
1 | def add(int a, int b) { |
闭包
1 | def closure = { |
类
1 | class Song { |
- Groovy 自动提供一个构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应。
常用操作
IO
1 | new File('/User/lihengming/test.txt').withReader('UTF-8') { reader -> |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com