当前位置: 首页 > news >正文

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

相关文章:

  • oracle通过DBlink连接mysql(MariaDB)
  • Compile FreeCAD on Windows
  • Elasticsearch-DSL(highlight) 004
  • linux-selinux安全防护,加密解密
  • Lua 笔记--编译、执行、错误与协同程序
  • 解决input file按钮要点击两次才弹出选择文件窗口
  • java-NIO
  • 转:对分库分表的一些想法
  • Web 图形验证码的校验1
  • Xcode快捷键--灰常实用的快捷键,以后编程快捷多了
  • 十条nmap常用的扫描命令
  • winPE系统下查看系统的IP及DNS地址
  • PC标签 phpcmsv9
  • YII 验证和消息
  • Postgresql数据库运维笔记
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Angular 响应式表单 基础例子
  • ECMAScript6(0):ES6简明参考手册
  • leetcode讲解--894. All Possible Full Binary Trees
  • nginx 负载服务器优化
  • Python3爬取英雄联盟英雄皮肤大图
  • Windows Containers 大冒险: 容器网络
  • 成为一名优秀的Developer的书单
  • 工程优化暨babel升级小记
  • 模型微调
  • 实现简单的正则表达式引擎
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • ​如何防止网络攻击?
  • !$boo在php中什么意思,php前戏
  • #pragma once与条件编译
  • #vue3 实现前端下载excel文件模板功能
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (day 12)JavaScript学习笔记(数组3)
  • (vue)页面文件上传获取:action地址
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)linux 命令大全
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET单元测试
  • ::什么意思
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C++]类和对象【下】
  • [CISCN 2023 初赛]go_session
  • [leetcode]56. Merge Intervals归并区间
  • [Oh My C++ Diary]一元作用域运算符::的使用
  • [Python从零到壹] 五十三.图像增强及运算篇之直方图均衡化处理
  • [Python设计模式] 第27章 正则表达式——解释器模式
  • [SpringCloud] OpenFeign核心架构原理 (一)
  • [SQL]实现按照指定分割分分割字符串
  • [工具]json转类
  • [工业自动化-10]:西门子S7-15xxx编程 - PLC主站 - 信号量:数字量