2011-02-09 50 views
3

查詢:我如何在Grails的拉最小值從地圖[Grails的/ Groovy中]映射項的最小值

到目前爲止,我發現下面的代碼從常規

["Java":1, "Groovy":4, "JavaScript":2].min{it.value} 
地圖得到最小值

但在Grails的

DONOT工作

下面的代碼段

def map = ["Java":1, "Groovy":4, "JavaScript":2] 
println map.min{it.value} 
assert map.min{it.value}==1 

比我曾嘗試提前KS

回答

3

如果你想從地圖中的最小值,你可以這樣做:

def map = ["Java":1, "Groovy":4, "JavaScript":2] 
println map.values().min() 
assert map.values().min() == 1 

編輯

而且,由於1.7.6的closure accepting version of map.min一直在Groovy,和Grails (自v1.3.6開始)使用Groovy 1.7.5

+0

你想介紹一下爲什麼groovy代碼[code] map.min {it.value} [/ code]不能在Grails中工作嗎?提前致謝。 – Rehman 2011-02-09 12:13:40

+0

@Rehman我更新了我的答案以添加此信息:-) – 2011-02-09 12:25:06

0

min()不返回參數閉包返回的最小值,它返回閉包返回最小值的集合的元素。

map.min {it.value}是有效的調用,但它不是一個值。這是一個MapEntrykeyvalue屬性。所以map.min{it.value}.value會做。