#mule #dataweave
#mule #dataweave
Вопрос:
Много раз я сталкиваюсь с ситуациями, когда мне приходится использовать вложенный when otherwise
. То есть, после того, как выражение принимает значение true в условии, я должен проверить наличие другого условия.
Является ли вложенность when otherwise
хорошей практикой или есть альтернативы получше?
Ответ №1:
В зависимости от ситуации вы можете сгруппировать их, как и любые другие логические проверки. Некоторые можно комбинировать с and
, другие с or
, некоторые с not
. Может быть полезно сгруппировать логические проверки в группу функций с описательным именем.
Альтернативой when/otherwise
является сопоставление с шаблоном, которое доступно в DataWeave 1.0, но я не могу найти документы для него. Вот документы для версии 2.0: https://docs.mulesoft.com/mule-runtime/4.1/dataweave-pattern-matching
И вот пример сопоставления с шаблоном для логического выражения в 1.0:
5 match {
n when n < 5 -> "number is less than 5"
n when n > 5 -> "number is greater than 5"
default -> "number is 5"
}
Вы можете заменить n < 5
и n > 5
вызовами функций, которые вместо этого возвращают логическое значение.
Комментарии:
1. Возможно, я не передал это должным образом. Вот что я имею в виду:
("x" when expression2 otherwise "y") when (expression 1) otherwise ("xx" when expression 3 otherwise "yy")
Я не уверен, что условие такого рода может быть записано с использованием сопоставления с образцом. Справа от стрелки может быть другое условие. Но может быть не очень элегантным.2. Я думаю, вы передали это правильно. Я просто перечисляю ваши варианты с точки зрения организации логической логики в DataWeave. Вы можете либо 1) встроить, когда / в противном случае 2) сгруппировать, когда / в противном случае, в функции и вызывать их вместо этого, либо 3) использовать сопоставление с шаблоном с вариантами 1 и 2.