Mule 理解匹配操作符

Mule 理解匹配操作符,mule,dataweave,Mule,Dataweave,嗨,我对match操作符的用法感到困惑。我遇到了一段与文档中的解释完全不同的代码: 请帮助理解match语法的含义好问题!match关键字在DataWeave中有两个用途,它取决于它的位置。Match用于正则表达式或模式匹配 匹配正则表达式的 如果match在左侧(lhs)有一个字符串,在右侧(rhs)有一个正则表达式,它将按照以下操作。基本上,它进行正则表达式匹配: Match返回一个数组,该数组包含整个匹配表达式,后跟与提供的正则表达式匹配的所有捕获组 match用于模式匹配 如果mat

嗨,我对match操作符的用法感到困惑。我遇到了一段与文档中的解释完全不同的代码:


请帮助理解match语法的含义

好问题!
match
关键字在DataWeave中有两个用途,它取决于它的位置。Match用于正则表达式或模式匹配


匹配正则表达式的
如果
match
在左侧(lhs)有一个字符串,在右侧(rhs)有一个正则表达式,它将按照以下操作。基本上,它进行正则表达式匹配:

Match返回一个数组,该数组包含整个匹配表达式,后跟与提供的正则表达式匹配的所有捕获组


match
用于模式匹配 如果
match
的任何值(即,不计算为函数)在左侧,而在右侧有一个开括号,
match
现在正在进行模式匹配。你可以找到这方面的文件。在我做的演讲中,我对这一点做了相当广泛的介绍,你可以找到相关的幻灯片

对于您提供的示例(格式不错,顺便说一句):


match
正在检查其输入
x
是否为
null
、A、B、J、K或L。如果匹配其中任何一个,DW将评估箭头右侧的内容,并立即返回。如果没有匹配项,它将返回箭头右侧的
默认值

啊,这只是直接从文档中直接应用语法而已。!我对开关箱有一些了解,但我认为可能会有一些不同概念的组合,比如lambda。。。etc(文档中提到lambda可以在操作符内部使用)。是的,但是如果您还不了解模式匹配部分,则可能会有点难以找到差异:)
match
对于模式匹配,在DW中非常灵活,因此您也可以使用labmdas作为表达式。
%function testMatch(key)
    (key match {
        x when x is :null -> false,
        x when x == "A" -> true, 
        x when x == "B" -> false, 
        x when x == "J" -> true, 
        x when x == "K" -> false, 
        x when x == "L" -> true, 
        default -> false
    })
%function testMatch(key)
    (key match {
        x when x is :null -> false,
        x when x == "A" -> true, 
        x when x == "B" -> false, 
        x when x == "J" -> true, 
        x when x == "K" -> false, 
        x when x == "L" -> true, 
        default -> false
    })