1. 程式人生 > >Groovy語言學習--語法基礎(3)

Groovy語言學習--語法基礎(3)

若有 nes 2.4 基礎語法 col del person div metaclass

側重點可能是groovy metaClass基元類的概念,有點像java的反射,因為java反射目前基本也沒研究過,就mark一下,後續若有用到就深入研究一下。

基礎語法的東西貌似差不多八九不離十了,後面再寫個語法基礎(4) 就準備將groovy腳本和java的融合研究一下,深入研究一下其作為腳本如何完成規則引擎的一些職責。

package groovy.model


/*class Test3 {

}*/


def map = [key1:"john",key2:"tom",key3: "rose"]
map.each { println it }

map.each({key,value 
-> println "$key : $value"}) /* * 使用默認構造方法實例化Person類 */ def person1 = new Person() person1.setName("lucky") person1.setAge(20) person1.name = "jack" println person1 /* * groovy 風格 */ def person2 = new Person([‘name‘:‘gaga‘,‘age‘:22]) println person2 /* * java代碼 防止空指針 */ if
(person2 !=null) { println "check right" } /* * groovy 代碼防止空指針 */ person2?. println "welcome no null point" /* * 可變長參數 在調用的的時候可以使用任意個數的參數 */ int sum(int...var) { def total = 0 for(i in var) { total +=i } return total } println sum(1,2,2)
/* *枚舉 */ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } println Day.FRIDAY /* * 同java5一樣,groovy支持帶構造器、屬性和方法的enum */ enum Planet{ MERCURY(3.303e+23,2.49376e6), MARS(3.303e+23,2.49376e6), EARTH(5.976e+24, 6.37814e6) double mass double radius Planet(double mass,double radius) { this.mass = mass this.radius = radius } void printMe() { println "${name()} has a mass of ${mass} and a radius of ${radius}" } } Planet.EARTH.printMe() /* * 可以.方法查看enum相關的api 有很多 */ println Planet.EARTH.name() /* * metaClass 元類 通過元類,可以為對象增加方法 體現為groovy的動態性 */ def message = "hello world" print message.metaClass //message.metaClass.methods.each { println it.name } //message.metaClass.properties.each {println it.getKey()}

Groovy語言學習--語法基礎(3)