groovy學習歷程(第四章 閉包)

2021-09-23 18:39:57 字數 1538 閱讀 8934

閉包

閉包是一段匿名函式,由lambda表示式派生。

傳統方式求解:

package groovy

//求1到某個特定的數n之間所有偶數的和

def sum(n)

total

}println("sum of even numbers from 1 to 10 is $")

//求1到某個特定的數n之間所有偶數的積

def product(n)

prod

}println("sum of even numbers from 1 to 10 is $")

//求1到某個特定的數n之間所有偶數的平方所組成的集合

def sqr(n)

squared

}println("sum of even numbers from 1 to 10 is $")

在groovy中,可以有更簡潔的寫法:

def pickeven(n, block) 

}pickeven(10, )

也可以寫成這種形式:

pickeven(10)
或者:

pickeven(10)
都可以。

像之前的求和,求積,可以寫成完整的表示式:

//求1到某個特定的數n之間所有偶數的和

total = 0

pickeven(10)

println("sum of even numbers from 1 to 10 is $")

//求1到某個特定的數n之間所有偶數的積

total = 1

pickeven(10)

println("sum of even numbers from 1 to 10 is $")

//求1到某個特定的數n之間所有偶數的平方所組成的集合

total =

pickeven(10)

println("sum of even numbers from 1 to 10 is $")

閉包的使用方式

上面的 例子介紹了如何在定義方法呼叫引數時即時建立閉包,此外,還可以將閉包複製給變數並復用,

package groovy

def totalselectvalues(n, clouse)

}total

}println("total of even numbers from 1 to 10 is")

println(totalselectvalues(10) )

def isodd =

println("total of odd numbers from 1 to 10 is")

println(totalselectvalues(10,isodd))

在這個例子中,實現了將閉包作為引數傳遞,並且在構造器中的閉包進行解析,和直接建立的閉包不同,這種預建立的閉包可以多次呼叫,實現 了策略模式。

python學習第四章

1.建立字典 每個鍵和它的值之間用冒號隔開,項之間用逗號隔開,整個字典使用一對大括號括起來。2.字典基本操作 len d 返回d中項的數量。d k 返回關聯到鍵k上的值。d k v將值v關聯到鍵k上。del d k 刪除鍵位k的項。k in d檢查d中是否有含有鍵為k的項。3.字典的格式化字串 可以...

C Primer 學習(第四章)

1.左值和右值 c 中可以這樣簡單的理解左值和右值 能夠取位址的 有名字的就是左值,反之,不能取位址的 沒有名字的就是右值。當乙個物件被用作右值的時候,用的是物件的值 內容 當物件被用作左值的時候,用的是物件的身份 在記憶體中的位置 乙個重要的原則是在需要右值的地方可以用左值來代替,但是不能把右值當...

LinQ In Action 學習第四章

第四章開始了 linq to object 的講解 entity 用了很多linq的語法,如果linq 掌握好了entity很好學了 第四第五章 需要多加練習例子,熟練linq 的語法。第四章的例子做完了,主要講了一些常用的linq 語法。1.select select many 2.orderby...