Grovvy Step byStep Examples
def LIMIT=10
def count=1
println 'start'
while(count<=LIMIT){
println "count:${count}"
count++
}
println 'Done'
注意:固定变量使用大写编写
for语句:
def LIMIT =10;
println 'start'
for (count in 1..LIMIT){
println "${count}"
}
println 'done'
循环处理列表:
println 'start'
for (count in [11,12,13,14]){
println "${count}"
}
println 'done'
循环处理映射:
def staff=['ken':21,'john':25,'sally':22]
def totalAge=0;
for(staffEntry in staff){
totalAge+=staffEntry.value
}
print "total age is ${totalAge}"
循环处理字符串:
def name='Kenneth'
def listofChar=[]
for(letter in name){
listofChar << letter
}
println "listofChar:${listofChar}"
if判断:
def first=12
def second=34
if(first>second){
println "${first}>${second}"
}else{
println "${second}>${first}"
}
switch:
def n=10
switch (n){
case 1:println 'one'
case 2:println 'two'
case 3:println 'three'
case 10:println 'ten'
}
switch和范围:
def score=89
switch (score){
case 70..100:
grade='A'
break
case 60..70:
grade='b'
break
case 50..60:
grade='C'
break
case 40..50:
grade='E'
break
}
println "${score}:${grade}"
List和case:
def number=89
switch (number){
case [86,87,88,89]:
println 'number is eighty something'
break
case [66,67,68,69]:
println 'number is sixty something'
break
}
闭包及其调用:
def clos={println 'Hello world'}
clos.call()
参数化的闭包:
def clos={param->println "Hello ${param}"}
clos.call('Andy')
单个隐参数:
def clos={println "Hello ${it}"}
clos.call('Andy')
其中的${it}中的it代表iterator
each方法和闭包:
[1,2,3,4].each {println it}
['ken':21,'jphn':22,'sally':45].each {println it}
['ken':21,'joph':22].each {println "${it.key} maps to :${it.value}"}
条件元素:
[1,2,3,4].each {num->if(num%2==0) println num}
['ken':21,'jphn':22,'sally':45].each {staff->if(staff.value>=25)println staff.key}
any和every:
def anyElement=[11,12,13,14].any{element->element>12}
println "${anyElement}"
def someElement=[11,12,13,14].every{element->element>12}
println "${someElement}"
collect方法:
def list=[1,2,3,4].collect{element->return element*element}
println "list:${list}"
collect高级应用:
def doubles={item->2*item}
def triples={item->3*item}
def map(clos,list){
return list.collect(clos)
}
println "Doubleing:${map(doubles,[1,2,3,4])}"
println "Tripling:${map(triples,[1,2,3,4])}"
Grovvy类:
class Account1 {
def number
def balance
}
def acc=new Account1(number:'ACB123',balance:1200)
println "Account ${acc.number} has balance ${acc.balance}"
注意:acc.number用了访问Account对象的acc的number属性。
groovy中的getter和setter都是隐含方法。
grovvy类方法实例:
class Account1 {
def number
def balance
def credit(amount){
balance+=amount
}
def debit(amount){
if(balance>=amount){
balance=amount
}
}
def display(){
println "Account:${number} with balance:${balance}"
}
}
def acc=new Account1(number:'123Abc',balance: 1200)
acc.display()
acc.credit(200)
acc.display()
acc.debit(900)
acc.debit(700)
acc.display()
嵌套类实例
package com.andy.test
/**
* Created by admin on 16/5/6.
*/
class Account1 {
def number
def balance
def credit(amount) {
balance += amount
}
def debit(amount) {
if (balance >= amount) {
balance = amount
}
}
def display() {
println "Account:${number} with balance:${balance}"
}
String toString() {
return "Account:${number} with balance:${balance}"
}
}
class Bank{
def openAccount(number,balance){
def acc=new Account1(number:number,balance:balance)
accounts[number]=acc
}
def creditAccount(number ,amount){
def acc=this.findAccount(number)
if(acc!=null){
acc.credit(amount)
}
}
def getAccountBalance(number){
def acc=this.findAccount(number)
return (acc==null)? null:acc.balance
}
def getTotalAssets(){
def total=0;
accounts.each {number,account->total+=account.balance}
return total
}
def findAccount(number){
def acc=accounts.find{entry->entry.key==number}
return (acc==null)?null:acc.value
}
def name
def accounts=[:]
}
def bk=new Bank(name:'Community')
bk.openAccount('123ABC',1200)
bk.openAccount('456DEF',1000)
bk.openAccount('789GHI',2000)
bk.creditAccount('123ABC',300)
println "Balance for account 123ABC is :${bk.getAccountBalance('123ABC')}"

浙公网安备 33010602011771号