Groovy:在地图中使用范围作为关键字?

时间:2016-09-28 10:07:36

标签: groovy

我仍然是Groovy的新手,只是在一个名为FileBot的程序中使用它。无论如何,为了对一些事情进行排序,而不编写10,000行代码,我希望能够使用范围作为地图中的关键字。所以基本上我想做的是'a'在'1'和'10'之间返回'x'值。我知道我可以把它写成{a >= 1 && <=10 ? 'Do This' : null},但这样做会更多。另外,我显然想将它用于多个不同的范围,或者这不是问题。

同样,如果有更简单的方法可以做到这一点,我想也许有一个csv文件,但我不确定究竟是怎么回事。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

方法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:

那么你也可以利用下面的groovy开关案例

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