根据文本值命名数组

时间:2018-05-03 18:07:09

标签: lotusscript

我不知道这是否可能。我想创建一组数组,每个数组都以另一个数组中的值命名。即: cat(0)" TRENDS" 猫(1)"机遇" cat(2)" TARGET ACCOUNTS" 猫(3)'成就" cat(4)" LOST SALES"" cat(5)" QUOTES"

基于此返回,我想为上面的每个值创建数组。即: TRENDS(0) 机会(0) TARGETACCOUNTS(0) 成绩(0) LOSTSALES(0) 报价(0)

请注意,cat数组中返回的值可能会更改,因此硬编码数组名称不可行。

我已经搜索过代码来执行此操作无济于事。任何人都有任何想法或代码如何做到这一点。

提前致谢。

麦克

2 个答案:

答案 0 :(得分:1)

您实际上可以使用NotesItem类。例如,您创建一个虚拟NotesDocument并将其用作数组的容器,如下所示:

dim s as new NotesSession
dim myArrays as NotesDocument
dim item as NotesItem
set myArrays = new NotesDocument(s.currentDatabase)
ForAll name in cat
  set item = new NotesItem(myArrays,name,"")
end ForAll 

假设您在问题文本中的cat()数组中的值,您现在可以使用简写表示法通过NotesDocument和NotesItems访问这些数组:

   ' get the nth element 
   dim x as string
   x = myArrays.Trends(n)

   ' set the nth element
   myArrays.Opportunities(n) = "some value"

   ' assign the entire array
   dim someArray(50) as integer
   ' code to initialize someArray here
   myArrays.TargetAccounts = myArray

   ' loop through the array
   For i = 0 to ( ubound(myArrays.Quotes) - 1)
       x = myArrays.Quotes(i)
   Next

   etc.
   etc.

您永远不必保存myArrays文档。只要它在代码中保留在范围内,它及其包含的项目就会很好。

您还可以使用NotesItem的AppentToTextList方法以及GetItemValue和SetItemValue方法,而不是使用LotusScript简写表示法。

另外,请注意我的示例代码中的New方法仅设置每个数组的zero-eth元素。如果需要,您可以更改它以从已加载到内存中的临时数组中设置整个值数组。

当然,您必须小心数据类型。我在调用contructor时使用的value参数在所有情况下都是一个字符串。您可以轻松使用其他类型,如NotesItem的文档中所示。

最后的警告:这并不像使用本机LotusScript数组那样高效,但在大多数情况下,这可能不是一个大问题。

答案 1 :(得分:0)

不,变量名在编译时设置。最好的办法是使用一个关联数组,在LotusScript中称为List。