Как перевести оператор перестановки из Lotus Formula в Lotus Script?

Мне нужно перевести код 20-летней давности с Lotus Formula на Lotus Script. Исходный код содержит некоторый оператор премутации, который, я думаю, не реализован в Lotus Script.

Вот одна из строк, которую мне нужно перевести.

@If(Transport *= "Car" : "Bus" : "Boat" | (Transport *= "Airplane" & someOtherCondition); doSomething; doSomethingElse)

Я знаю, что могу перевести Transport *= "Airplane" на doc.getFirstItem("Transport").Contains("Airplane"), но что означает Transport *= "Car" : "Bus" : "Boat"?

Я не хочу использовать функцию Evaluate, я буду использовать ее только в том случае, если у меня нет других вариантов.

Вот ссылка Официальная документация оператора перестановки.


person Jérémie Bolduc    schedule 04.08.2016    source источник


Ответы (1)


List1 *= List2

*= сравнивает каждый элемент из List1 с каждым элементом из List2. Если есть хотя бы одно совпадение, возвращается @True.

List1 = List2

= сравнивает попарно: первый элемент из List1 с первым элементом из List2, второй элемент из List1 со вторым элементом из Список2 и так далее. Если в одном списке меньше элементов, чем в другом, последний элемент в более коротком списке будет использоваться для сравнения с остальными элементами более длинного списка. Если есть хотя бы одно совпадение, возвращается @True.

*= отличается от = только в том случае, если у вас есть списки с обеих сторон.

Ваша формула

@If(Transport *= "Car" : "Bus" : "Boat"; ...

можно «перевести» на

set item = doc.getFirstItem("Transport")
If item.Contains("Car") Or item.Contains("Bus") Or item.Contains("Boat") Then
    ...

Тем не менее, не стесняйтесь использовать Evaluate в LotusScript: это быстро и надежно.

person Knut Herrmann    schedule 04.08.2016
comment
Мы уверены, что Transport никогда не является списком? - person Richard Schwartz; 05.08.2016