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')}"
Grovvy Step byStep Examples的更多相关文章
- Siebel 开发规范
Siebel Configuration and Development Guideline 1 2 2.1 2.2 2.3 11. 2.4 2.5 3 3.1 3.2 3.2.1 3.2.2 3.3 ...
- INFORMATICA 的部署实施之 BACKUP&RESTORE
当一套BI 解决方案成熟运行后,公司会快速扩大客户群,这时快速的将开发出来的SOLUTION 应用到全新的生产环境中就很重要了,下面谈谈我做这样项目(INFORMATICA BACKUP&RE ...
- [收藏夹整理]OpenCV部分
OpenCV中文论坛 OpenCV论坛 opencv视频教程目录(初级) OpenCV 教程 Opencv感想和一些分享 tornadomeet 超牛的大神 [数字图像处理]C++读取.旋转和保存bm ...
- uva 1631
1631 Locker A password locker with N digits, each digit can be rotated to 0-9 circularly. You can ro ...
- Mod in math
An Introduction to Modular Math When we divide two integers we will have an equation that looks like ...
- [收藏转载链接]Opencv部分
转载自-柳如风-http://www.cnblogs.com/rongfangliu/p/opencvlink.html [收藏夹整理]OpenCV部分 OpenCV中文论坛 OpenCV论坛 o ...
- HDU 4433 locker(DP)(2012 Asia Tianjin Regional Contest)
Problem Description A password locker with N digits, each digit can be rotated to 0-9 circularly.You ...
- HDU 4433 locker(12年天津,DP)
4576 njczy2010 C Accepted 860 KB 140 ms G++ 2063 B 2014-10-16 09:51:19 哎,为啥1000*100*100的复杂度的dp就不敢敲了呢 ...
- [转]Bootstrap 3.0.0 with ASP.NET Web Forms – Step by Step – Without NuGet Package
本文转自:http://www.mytecbits.com/microsoft/dot-net/bootstrap-3-0-0-with-asp-net-web-forms In my earlier ...
随机推荐
- Hadoop 概述
Hadoop 是 Apache 基金会下的一个开源分布式计算平台,以 HDFS 分布式文件系统 和 MapReduce 分布式计算框架为核心,为用户提供底层细节透明的分布式基础设施.目前,Hadoop ...
- [转]Try Cloud Messaging for Android
本文转自:https://developers.google.com/cloud-messaging/android/start
- 原创翻译-值得关注的10个python语言博客
原文链接 原文链接的网页感觉网络不是很好,不容易上.我在这里就给大家做个翻译吧. 大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建 ...
- AutoIT简介
AutoIT最初是为了帮助IT管理和维护而开发的工具,能自动完成软件的安装.由于自动化安装和自动化测试在功能需求上有许多相似之处,都要模拟用户对软件进行操作,并验证执行的结果,所以,AutoIT逐渐成 ...
- mongoVUE1.5.3 破解方法
MongoVUE是个免费软件,但超过15天后功能受限.可以通过删除以下注册表项来解除限制: [HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-82 ...
- Apache Shiro(安全框架)
当前常用流行的安全框架主要有两种:一个是Apache Shiro:另一个是Springsource. 现在介绍一下apache shiro: 既然是安全框架,解决的肯定是权限的 控制.所谓权限是指:用 ...
- 分层开发MySchool总结
由于分层之间存在各层之间的关系窗体之间的方法跳转,故有需要者可以进行下载本地文件 MySchool.rar 3304KB 5/22/2016 9:43:28 AM ,代码中有注释,
- jsp 微信公众平台 token验证(php、jsp)(转载)
微信公众平台现在推出自动回复消息接口,但是由于是接口内容用的是PHP语言写的,很多地方操作起来让本人这个对java比较熟悉的小伙很别扭,所以仿照PHP的接口代码做了一套jsp语言编写的接口. 首先先把 ...
- 原生js颗粒页换图效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- JavaScript中浏览器兼容问题
浏览器兼容性问题是在实际开发中容易忽略而又最重要的一部分.我们在讲老版本浏览器兼容问题之前,首先要了解什么是能力检测,它是来检测浏览器有没有这种能力,即判断当前浏览器是否支持要调用的属性或者方法.下面 ...