Groovy基础
发布时间:2020-12-14 16:42:32 所属栏目:大数据 来源:网络整理
导读: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.
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,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |