Groovy基础

2018-07-14  本文已影响15人  殇透俄0心

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

上一篇下一篇

猜你喜欢

热点阅读