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')}"
 
原文地址:https://www.cnblogs.com/dream-to-pku/p/5466260.html