如何将排列运算符从 Lotus Formula 转换为 Lotus Script?
How translate permutation operator from Lotus Formula to 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"
代表什么?
我不想使用评估功能,只有在没有其他选择的情况下我才会使用它。
这里有一份link到Permutation算子的官方文档。
List1 *= List2
*=
将 List1 中的 every 元素与 List2 中的 every 元素进行比较。如果至少有一场比赛,那么它 returns @True.
List1 = List2
=
成对比较:List1 中的 first 元素与 List2 中的 first 元素,second 来自 List1 的元素与来自 List2 的 second 元素,依此类推。如果一个列表的元素少于另一个,则较短列表中的最后一个元素将用于与较长列表的其余元素进行比较。如果至少有一场比赛,那么它 returns @True.
*=
与 =
的不同之处在于双方都有列表。
你的公式
@If(Transport *= "Car" : "Bus" : "Boat"; ...
可以是"translated"到
set item = doc.getFirstItem("Transport")
If item.Contains("Car") Or item.Contains("Bus") Or item.Contains("Boat") Then
...
不过,请不要犹豫,在 LotusScript 中使用 Evaluate
:它既快速又可靠。
我必须将一些 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"
代表什么?
我不想使用评估功能,只有在没有其他选择的情况下我才会使用它。
这里有一份link到Permutation算子的官方文档。
List1 *= List2
*=
将 List1 中的 every 元素与 List2 中的 every 元素进行比较。如果至少有一场比赛,那么它 returns @True.
List1 = List2
=
成对比较:List1 中的 first 元素与 List2 中的 first 元素,second 来自 List1 的元素与来自 List2 的 second 元素,依此类推。如果一个列表的元素少于另一个,则较短列表中的最后一个元素将用于与较长列表的其余元素进行比较。如果至少有一场比赛,那么它 returns @True.
*=
与 =
的不同之处在于双方都有列表。
你的公式
@If(Transport *= "Car" : "Bus" : "Boat"; ...
可以是"translated"到
set item = doc.getFirstItem("Transport")
If item.Contains("Car") Or item.Contains("Bus") Or item.Contains("Boat") Then
...
不过,请不要犹豫,在 LotusScript 中使用 Evaluate
:它既快速又可靠。