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的更多相关文章

  1. 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 ...

  2. INFORMATICA 的部署实施之 BACKUP&RESTORE

    当一套BI 解决方案成熟运行后,公司会快速扩大客户群,这时快速的将开发出来的SOLUTION 应用到全新的生产环境中就很重要了,下面谈谈我做这样项目(INFORMATICA BACKUP&RE ...

  3. [收藏夹整理]OpenCV部分

    OpenCV中文论坛 OpenCV论坛 opencv视频教程目录(初级) OpenCV 教程 Opencv感想和一些分享 tornadomeet 超牛的大神 [数字图像处理]C++读取.旋转和保存bm ...

  4. uva 1631

    1631 Locker A password locker with N digits, each digit can be rotated to 0-9 circularly. You can ro ...

  5. Mod in math

    An Introduction to Modular Math When we divide two integers we will have an equation that looks like ...

  6. [收藏转载链接]Opencv部分

    转载自-柳如风-http://www.cnblogs.com/rongfangliu/p/opencvlink.html [收藏夹整理]OpenCV部分   OpenCV中文论坛 OpenCV论坛 o ...

  7. 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 ...

  8. 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就不敢敲了呢 ...

  9. [转]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 ...

随机推荐

  1. hdu2527哈夫曼编码

    /* Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  2. NOIP2014提高组 DAY1 -SilverN

    T1  生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头剪刀布的 ...

  3. GoLang 的 daemonize 实现

    func daemonize(cmd string, args []string, pipe io.WriteCloser) error { pid, _, sysErr := syscall.Raw ...

  4. 边工作边刷题:70天一遍leetcode: day 86-2

    Best Meeting Point 要点: 题本身不难理解,manhattan distance.follow up就变成weighted了(因为一个地方可以有多个住户) 注意input是grid的 ...

  5. codeforces 480C C. Riding in a Lift(dp)

    题目链接: C. Riding in a Lift time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  6. Linux安装Redis

    环境:Centos 6.2 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value ...

  7. HTTP请求与响应方式

    HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成: l   请求方法URI协议/版本 l   请求头(Request Hea ...

  8. java 20 - 9 带有缓冲区的字节输出流和字节输入流

    由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多. 所以,java就专门提供了带有缓冲区的字节类: 缓冲区类(高效类) 写数据:BufferedOutpu ...

  9. CSS padding margin border属性

    主要定义四个区域:内容(content).内边距(padding).边框(border)和外边距(margin) margin:层的边框以外留的空白 background-color:背景颜色 bac ...

  10. android中scrollTo和scrollBy的理解

    protected   int  mScrollX;    //该视图内容相当于视图起始坐标的偏移量   , X轴 方向 protected   int  mScrollY;    //该视图内容相当 ...