了解匹配操作员



嗨,我对匹配操作员的使用感到困惑。我遇到了一个代码片段,看起来与文档上的解释相似:https://docs.mulesoft.com/mule-runtime/3.9/dataweave-operators.match

%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
    })

请帮助了解该语法的含义

很棒的问题!match关键字在DataWeave中有两个目的,这取决于其放置。匹配要么用于正则匹配或模式匹配。


match for Regex

如果match在左侧(LHS)上有一个字符串,而RHS上的正则是一个正则弦,则将根据以下文档运行。基本上,它正在做正则匹配:

匹配返回一个包含整个匹配表达式的数组,然后是所有匹配的捕获组。


match用于图案匹配

如果match在LHS上具有评估值(即未评估函数)的任何内容,而RHS上的一个开放式括号中的match现在正在进行模式匹配。您可以在这里找到该文档。我在演讲中非常广泛地介绍了这一点,您可以在这里找到幻灯片。

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

%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
    })

match正在检查其输入x是否为null,A,B,J,K或L。如果它匹配任何一个,DW将评估箭头RHS上的内容,并立即返回。如果什么都不匹配,它将返回default的箭头RHS上的内容。

最新更新