Отличный вопрос! Ключевое слово match
служит двум целям в DataWeave и зависит от его размещения. Соответствие используется либо для регулярных выражений, либо для сопоставления с образцом.
match
для регулярных выражений
Если match
имеет строку в левой части (lhs) и регулярное выражение в правой части, оно будет работать в соответствии со следующими документами . По сути, он выполняет сопоставление с регулярным выражением:
Match возвращает массив, который содержит все совпадающее выражение, за которым следуют все группы захвата, соответствующие указанному регулярному выражению.
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 оценит то, что находится на правой стороне стрелки, и вернись немедленно. Если ничего не совпадает, он вернет то, что находится на правой стороне стрелки для default
.