zoukankan      html  css  js  c++  java
  • 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')}"
    
     
  • 相关阅读:
    web.xml中<web-app>报错
    groovy初体验:groovy在java中的应用
    Mac安装JMeter时Unable to access jarfile ./ApacheJMeter.jar 解决方法
    intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法
    关于go get无法安装国内被墙软件解决办法
    Oracle 序列
    无锁并发框架Disruptor学习入门
    vsftp服务器部署
    FinalShell 推荐
    supperset (python 2.7.12 + mysql)记录
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/5466260.html
Copyright © 2011-2022 走看看