Groovy的入门语法操作
程序员文章站
2022-03-11 21:32:37
...
1.下载groovy插件,地址:http://dist.codehaus.org/groovy/distributions/update/GroovyEclipse.zip
2、解压,把目录features和plugins 拷贝到eclipse对应的目录下。
3、eclipse中新建Groovy类HelloGroovy.groovy
2、解压,把目录features和plugins 拷贝到eclipse对应的目录下。
3、eclipse中新建Groovy类HelloGroovy.groovy
/** * */ package com.tonyj.groovy /** * @author Administrator * */ public class HelloGroovy{ //public除去 默认 public static void main(def args){ //不需要的语句结束符; //变量操作 不需要声明类型 def var="""hello world groovy!""" println var //打印出来的格式保留换行 println var.class//打印 class java.lang.String var = 1 println var.class // 打印 class java.lang.Integer var = true println var.class //打印 class java.lang.Boolean //循环操作 支持Gstring ${i} ${val} def val = "testw" for(i in 0..2){ println "This is ${i}:${val}" } //内集操作 def collect=["a","b","c"] //内集添加的三种方式 collect.add(1); collect<<"come on"; collect[collect.size()]=100.0 //循环遍历打印 collect.each{println it} //Collection使用类似数组下标的方式进行检索 println collect[collect.size()-1] //打印100 //groovy支持负索引 println collect[-1] //索引其倒数第1个元素 打印100 //Collection支持集合运算 collect=collect+5 //在集合中添加元素5 println collect[collect.size()-1] //打印5 collect=collect-'a' //在集合中减去元素a(第1个) println collect[0] //现在第1个元素变成b了 打印b //map的定义 def map=['name':'john','age':14,'sex':'boy'] map=map+['weight':25] //添加john的体重 map.put('length',1.27) //添加john的身高 map.father='Keller' //添加john的父亲 //检索 println map['father'] //通过key作为下标索引 println map.length //通过key作为成员名索引 // 闭包 Closure map.each({key,value-> //key,value两个参数用于接受每个元素的键/值 println "$key:$value"}) map.each{println it} //it是一个关键字,代表map集合的每个元素 /** * 打印 * name:john * age:14 * sex:boy * weight:25 * length:1.27 * father:Keller * */ map.each({ println it.getKey()+"-->"+it.getValue()}) def say={word-> println "Hi,$word!" } say('groovy') //打印Hi,groovy! say.call('groovy&grails')//打印Hi,groovy&grails! //类处理 def person1=new Person() person1.name='kk' person1.age=20 println person1 def person2=new Person(['name':'gg','age':22]) //[]号可以省略 println person2 //可变变量的方法调用 println sum(1) println sum(1,2) println sum(1,2,3) //枚举类型 def today = Day.SATURDAY switch (today) { //Saturday or Sunday case [Day.SATURDAY, Day.SUNDAY]: println "Weekends are cool" break //a day between Monday and Friday case Day.MONDAY..Day.FRIDAY: println "Boring work day" break default: println "Are you sure this is a valid day?" } // Elvis操作符 def name def displayName = name ? name : "Unknown" //基于“不重复”的原则 displayName = name ?: "Unknown" println displayName //动态性 msg是一个String,通过元类,我们为msg增加了一个String 类中所没有的方法up 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 } //元类判断有没有一个叫up的方法 if (msg.metaClass.respondsTo(msg, 'up')) { println msg.toUpperCase() } //推断它有没有一个叫bytes的属性 if (msg.metaClass.hasProperty(msg, 'bytes')) { println msg.bytes.encodeBase64() } } //可变变量 static int sum(int... var) { def total = 0 for (i in var) total += i return total } } class Person { /** * 不需要public修饰符 * 不需要类型说明 * 不需要getter/setter方法 * 不需要构造函数 * 不需要return * 不需要()号 */ def name def age //Groovy 默认返回方法的最后一行的值 String toString(){//注意方法的类型String,因为我们要覆盖的方法为String类型 "$name,$age" } } /** *枚举类型 * */ enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY }
上一篇: 如何用python处理excel表格
下一篇: 没想到最懂你的是它