Groovy
如何定義一個變量:不用定義類型
println為輸出類似system.out
def b = "";def為定義 “”代表字符串String型‘’也可以代表String
就是‘’中的變量也會當成字符串。這是與“”的區別
$表名變量
def a=10;
def b=“$a” 打印后會輸出10
def c='$a' 打印會輸出$a
循環
第一種
for(int i=0;i<3;i++){、/循環三次
println"sdsd";
}
第二種 range方式
for(i in 0..2){//循環三次
println'sdsd';
}
其它實現方式
0.upto(2){//從0到2 循環三次
println‘sdsd‘;
}
3.times(){println "$it"}//執行三次
0.step(10,2){println“it”}//步長 從0到10每循環一次加2
//閉包概念:像是一個方法{}是作為參數
0.upto(2,{//從0到2
println‘sdsd‘;
})
安全導航操作符?.
String a =null
prinln a?.method();
?.當a為null時會不執行method()方法,會打印出null,避免了空指針a報錯
4.javaBean
省略了get、set方法
class Person{
String name;
}
默認public
Person p = new Person();
p.name
5.靈活初始化與具名參數(name:"value")
Groovy 可以靈活的初始化一個JavaBean類。在構造對象時,可以簡單地以逗號分隔得鍵值對來給出屬性值。如果類有一個無參構造器,該操作會在構造器之后執行
class Robbt {
def type,height,width
def toString2(){
println "type: $type,height:$height,width:$width"
}
}
6可選形參
Groovy中可以把方法和構造器的形參設為可選。實際上,我們想設置多少就設置多少,但這種必須在末尾。
就是調用方法是可以不給這個參數值,因為他有默認值。
${type,height}取兩個值
閉包將代碼塊作為一個參數
//好看一些,Groovy規定,如果方法的最后一個參數是閉包,可以放到方法外面 numList.each(){ println it }
//正常 numList.each({ println it })
def bibao(closure){
for(i in 1..`10){
closure(i)
}
}
bibao{
println it
}
閉包中可以包含代碼邏輯,閉包中最后一行語句,表示該閉包的返回值,不論該語句是否冠名return關鍵字。
如果c是無參數閉包,那么它的標準調用方法是c.call(),它的簡潔調用方法是c()。見代碼:
def a = 'coffee'
def c = {
def b = 'tea'
a + ' and ' + b //a refers to the variable a outside the closure,
//and is remembered by the closure
}
assert c() == 'coffee and tea' //short for c.call()
grep(xxx) 作用是過濾xxx的方法
將map轉成list RulesBpi.collect{k,v->newMagicCubeConfig.MagicCubeRule(k,v)}