Каковы некоторые лучшие альтернативы для вложенных, когда в противном случае?

#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.