嗨,我对匹配操作员的使用感到困惑。我遇到了一个代码片段,看起来与文档上的解释相似: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上的内容。