在Groovy中使用.match运算符的示例

在Groovy中使用.match运算符的示例,groovy,Groovy,作为一个新手问题,假设可以使用switch语句,那么match操作符可以用于列表迭代器吗 def myList = [1, 2, 3, 4] myList.each { it.match { case /1/ => println "ONE!" // etc. } } 你是说: def myList = [1, 2, 3, 4] myList.each { switch(it) { case ~/1/ : print

作为一个新手问题,假设可以使用switch语句,那么match操作符可以用于列表迭代器吗

def myList = [1, 2, 3, 4]
myList.each {
    it.match {
        case /1/ => println "ONE!"
        // etc.
    }
}

你是说:

def myList = [1, 2, 3, 4]
myList.each {
    switch(it) {
        case ~/1/ : println "ONE!"; break
        case ~/2/ : println "TWO!"; break
    }
}

(我不是groovy专家-建议是可取的)

groovy的方法是使用闭包映射:

def caseMap = [ 1 : { println "ONE!" },
                2 : { println "TWO!" },
              ]
def myList = [1, 2, 3, 4]
myList.each { 
    if (caseMap.containsKey(it)) { 
        caseMap[it]() 
    }
}

您可能需要在caseMap[它]周围放置parens。

是的,谢谢,这会有用的。我正在寻找一个.match操作符的例子,它可以在这里使用吗?或者在适当的地方使用吗?标准groovy中并没有匹配操作符。。。你在考虑Ruby吗?Reimeus,你能解释一下你会怎么做吗?在eclipse中,如果你输入'it.match',内容助手会将它填充为match.match{case value=>}作为match/case语句。可能不适合这里?正在查找匹配/案例示例。@Reimeus这不是groovy…:-/对于myList中的每个项目,在caseMap中查找要执行的相应操作,然后执行该操作(如果在映射中找到)。Oops。很抱歉您正在寻找匹配运算符示例。