闭合形式的开关盒匹配不当

Switch case in closure form not matching properly

我正在尝试使用 Groovy 的模式匹配基于部分字符串创建一个 switch case。我已经开始工作了 -

String s = "abc";

switch(s){
  case { it =~ /b/ } :
    //this works
    break;
 .....
}

但是当我尝试抽象出闭包时,我 运行 变成了问题 -

String s = "abc";
def partialMatch = {string, pattern -> string =~ /$pattern/}

switch(s){
  case partialMatch(s, "b"):
    //this doesn't work
    break;
 .....
}

似乎匹配成功了,但由于某种原因,案件仍然没有触发。这是为什么?

您需要将 partialMatch 放入闭包中才能由 switch:

执行
case {partialMatch(s, "b")}: