[Grails / Groovy] минимальное значение записей карты - PullRequest
3 голосов
/ 09 февраля 2011

Запрос: как получить минимальное значение с карты в Граальсе

Пока я нашел следующий код, чтобы получить минимальное значение с карты в groovy

["Java":1, "Groovy":4, "JavaScript":2].min{it.value}

но это не работает в Grails

я попробовал следующий фрагмент кода

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

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Если вы хотите минимальное значение с карты, вы можете сделать:

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

редактировать

Кроме того, версия, принимающая закрытие map.min, находится в Groovy с 1.7.6, а Grails (с версии 1.3.6) использует Groovy 1.7.5

0 голосов
/ 09 февраля 2011

min() не возвращает минимальное значение, возвращаемое закрытием аргумента, оно возвращает элемент коллекции, для которого закрытие возвращает минимум.

map.min {it.value} является допустимым вызовом, но это не значение,Это MapEntry со свойствами key и value.Так что map.min{it.value}.value сделает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...