美文网首页
Groovy基础

Groovy基础

作者: 殇透俄0心 | 来源:发表于2018-07-14 09:11 被阅读15次

    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基础

          本文链接:https://www.haomeiwen.com/subject/ehmepftx.html