Groovy基础

1. Groovy简介

Groovy是运行在Java虚拟机上的敏捷语言。

2. 类和成员变量

static class FirstGroovyClass {

    private String firstFile

    String getFirstFile() {
        return firstFile
    }

    void setFirstFile(def str){
        firstFile = str
    }
}

//创建类实例,调用方法
def first = new FirstGroovyClass()
first.setFirstFile("First")
println(first)

def second = new FirstGroovyClass()
second.firstFile = "Second"
println second

//运行的结果
setFirstFile-----
FirstGroovyClass{firstFile='First'}
setFirstFile-----
FirstGroovyClass{firstFile='Second'}

类的写法和java一致,类的setter,getter可以直接类略set,get当做属性用。setFirstFile方法省略set前缀,当做属性赋值。firstFile是私有的,不要误以为是成员变量赋值,本质是调用方法

3. 方法

static class MethodClass {

    int square1(int num){
        return num * num
    }

    def square2(def num){
        num * num
    }

    def square3(def num){
        num * num
        "3"
    }

    def square4 = { num -> num * num }
    
    void myPrint(def str){
        println("myPrint -- " + str)
    }
}

def methodTest = new MethodClass()
println methodTest.square1(3)
println methodTest.square2(4)
println methodTest.square3(5)
println methodTest.square4(6)
methodTest.myPrint "HaHa"

//运行结果
9
16
3
36
myPrint -- HaHa

square1方法写法和java一致;def 表示不用指定返回值的类型; 方法可以省略return, 省略后最后一个语句为返回值。square4方法写法是一种闭包的写法;

调用方法时,参数为字符串,可以加空格隔开省略括号

4. lists 和maps

def list = [1, 2, 3, 4]
list.each {
    println "-----> $it"
}

def map = ['Android':1, 'IOS':2, 'WindowsPhone':3]
println "Android is " + map.get('Android')
println "IOS is " + map['IOS']
println "Windows Phone is " + map.WindowsPhone

map.keySet().each {
    println map.get(it)
}

//运行结果
-----> 1
-----> 2
-----> 3
-----> 4
Android is 1
IOS is 2
Windows Phone is 3
1
2
3

5. 字符串GString与String

def str = 'A'
println str.class.simpleName
def b = ['Android':100]
def gStr = "B${b.Android}"
println gStr
println gStr.class.simpleName

//运行结果
String
B100
GStringImpl

当使用""定义字符串时,可以使用${obj}符号引用一个变量,这时的字符串为GString类型

当使用'字符串'定义字符串时, 不可以使用$。

6. 闭包Closure

Closure是匿名代码块,可以接受参数和返回值。它们可以被视为变量,被当做参数传递给方法。

    Closure square = {
        it * it
    }

    Closure square2 = { num ->
        num * num
    }

    def result = square 4
    println result

    def result2 = square2 6
    println result2
    
    //运行结果
    16
    36

闭包只有一个参数时,默认有参数It

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Groovy是基于JVM虚拟机的一种动态语言,它的语法和Java非常相似,由Java入门Groovy,基本上没有任...
    飞雪无情flysnow_org阅读 5,272评论 0 7
  • Gradle是目前Android主流的构建工具,不管你是通过命令行还是通过Android Studio来build...
    Jdqm阅读 4,937评论 0 1
  • Groovy 是基于 JVM 虚拟机的一种动态语言,它的语法和 Java 非常相似,由 Java 入门Groovy...
    acc8226阅读 5,089评论 1 4
  • Gradle系列(一):Groovy基础Gradle系列(二):AndroidStudio的Gradle简介Gra...
    08_carmelo阅读 7,482评论 0 32
  • 基本方法参数定义 // Groovy中支持动态类型,即定义变量的时候可以不指定其类型。Groovy中,变量定义可以...
    Simon_z阅读 3,567评论 0 0