Groovy基础

1.Person.groovy

package com.caicongyang.test

/**
 * Created by caicongyang1 on 16/12/22.
 */
class Person {

    def name
    def age

    String toString() {//注意方法的类型String,因为我们要覆盖的方法为String类型
        "$name,$age"
    }
}

2.Test.groovy

package com.caicongyang.test

/**
 * Created by caicongyang1 on 16/12/22.
 */
class Test {
    /**
     * @param args
     */
    public static void main(def args) {
        println "Hello World"
        println '=================================='



        def person=new Person(['name':'Tom','age':22]) //引用Person对象 //[]号可以省略
        println person
        println '=================================='



        def var = "hello " + "world" + ",groovy!"; //字符串相加
        println var;
        println var.class;
        var = 1001;
        println var.class;
        println '=================================='



        def map=['name':'john','age':14,'sex':'boy']; //map
        println map.size;          //通过key作为成员名索引
        println map['name'] ;      //通过key作为下标索引
        println '=================================='




        def msg = "Hello!"
        println msg.metaClass;
        String.metaClass.up = {  delegate.toUpperCase() };
        println msg.up();
        //msg.metaClass.methods.each { println it.name }; //打印出所有的方法
        //msg.metaClass.properties.each { println it.name }; //所有的属性


        println '=================================='



        def aList = [5,'string',true] //List由[]定义,其元素可以是任何对象

        assert aList[1] == 'string'
        assert aList[5] == null //第6个元素为空
        aList[100] = 100  //设置第101个元素的值为10
        assert aList[100] == 100

        println aList.size

        println '=================================='

        def doubleQuoteWithoutDollar = "I am one dollar" //输出 I am one dollar
        def x = 1
        def doubleQuoteWithDollar = "I am $x dolloar" //输出I am 1 dolloar

        println doubleQuoteWithDollar



        println '=================================='

        def aRange = 1..5 //包含5

        def aRangeWithoutEnd = 1..<5  //包含1,2,3,4这4个元素,不包含5
        println aRange.from
        println aRange.to
        println aRangeWithoutEnd.to


        println '=================================='


        def aClosure = {//闭包是一段代码,所以需要用花括号括起来..
             ->  //这个箭头很关键。箭头前面是参数定义,箭头后面是代码,如果没有前面直接空着
            println"this is a code Closure" //这是代码,最后一句是返回值,

        }


        aClosure.call();


        def bClosure = {//闭包是一段代码,所以需要用花括号括起来..
            language  ->  //这个箭头很关键。箭头前面是参数定义,箭头后面是代码
            println  'this is a $language code Closure' //单引号直接输出$
            println  "this is a $language code Closure" //双引号$为参数替换
        }


        bClosure.call('groovy');




        println '=================================='






        testClosure (4, "test", {
            println "i am in closure"
        } )

        println '=================================='


        def iamList = [1,2,3,4,5]  //定义一个List
        iamList.each{  //调用它的each,这段代码的格式看不懂了吧?each是个函数,圆括号去哪了?
            println it
        }


    }


    def  static testClosure(int x1,String y1, Closure clo){
        //do something
        clo() //调用闭包
    }


    public List<Integer> each(List<Integer> self, Closure closure){
        closure();
    }



}

学习资源:

http://www.jianshu.com/p/94aabdfcdfc5

http://blog.csdn.net/yanbober/article/details/49047515





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值