Я думаю, что это может иметь смысл для функции if для оценки и возврата прохождения. Я видел только 2- и 3-параметрические функции if, используемые в дикой природе, поэтому я не могу комментировать версию с n-параметрами, как только что узнал об этом. (Кажется, это эквивалентно «если, еще, если,…, еще». Ххх.)
Ближайший синтаксис, который я знаю для списка условий / операторов, выглядит примерно так:
on_create: "filter([
true and debug('cmd 1'),
false and debug('cmd 2'),
true and debug('cmd 3'),
], value)",
Это выведет «cmd 1» и «cmd 3» на экран.
Это работает, потому что and
замыкает накоротко, и возвращает только первое, что должно пройти, или последнее, что выйдет из строя. Вызов filter()
требуется только в том случае, если вы хотите использовать true
и false
, в противном случае вы можете использовать true и null и удалить filter()
. Обратите внимание, что вы также можете использовать ;
с этой конструкцией, я думаю, что она оценивает последовательность команд, которую вы можете использовать и обрабатывать как обычную команду. Например:
on_create: "filter([
true and debug('cmd 1'),
false and (debug('cmd 2'); debug('cmd 3')),
true and (debug('cmd 4'); debug('cmd 5')),
], value)",
Печатает «cmd 1», «cmd 4» и «cmd 5» на экран.
Это эквивалентно:
on_create: "[
if(true, debug('cmd 1')),
if(false, debug('cmd 2'); debug('cmd 3')),
if(true, debug('cmd 4'); debug('cmd 5')),
]",
, который также выводит на экран «cmd 1», «cmd 4» и «cmd 5». Если вам нужно исключить из списка пустые элементы, можно использовать фильтр, как в первом примере.