2016-09-28 2 views
0

Я по-прежнему новичок в Groovy, просто использовал его в программе под названием FileBot. Во всяком случае, чтобы отсортировать некоторые вещи хорошо, не записывая 10 000 строк кода, я хочу использовать диапазон в качестве ключа на карте. Поэтому в основном я хочу сделать, если «a» находится между «1» и «10», возвращает значение «x». Я знаю, что могу написать его как {a >= 1 && <=10 ? 'Do This' : null}, но для этого было бы намного больше писать. Кроме того, я, очевидно, хочу использовать это для нескольких разных диапазонов, иначе это не будет проблемой.Groovy: Используйте диапазон как ключ на карте?

Аналогичным образом, если есть более простой способ сделать это, я подумал, может быть, с CSV-файлом, но я точно не знаю, как именно.

Любая помощь очень ценится!

+0

Итак, вы хотите поставить диапазон '1..10' в качестве' ключа' в 'Map' и' x', так как это значение, не так ли? –

ответ

1

Подход 1:Как Вы спросили

Вы можете создать карту с диапазонами довольно легко

Предполагая, что вы карту, как показано ниже с ranges в качестве ключа

Map sampleMap = [:] 

sampleMap << [(1..10): "In one ten", (20..30): "In twenty thirty"] 

Тогда вы может легко найти, присутствует ли ваш элемент в вашем диапазоне карт или нет, как показано ниже

def found = sampleMap.find { entry -> entry.key.contains(2) } 
println "found : " + found.value 

выход:

found : In one ten 

подход 2:

Ну вы также можете воспользоваться заводной переключателя случае, как показано ниже

def age = 5 
switch(age){ 

    case 1..10 : 
     //do your work 
     println "In one ten" 
     break 

    case 21..50 : 
     //do your work 
     println "In twenty fifty" 
     break 

    case 51..65 :  
     //do your work 
     println "In fifty sixty" 
     break 

    default: 
     //if nothing matches do something here 
     break 
} 

Выход:

In one ten 
Смежные вопросы