閉包
閉包是一段匿名函式,由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...