Именование массивов на основе текстовых значений - PullRequest
0 голосов
/ 03 мая 2018

Я не знаю, возможно ли это вообще. Я хочу создать набор массивов, каждый из которых назван в честь значений, которые находятся в другом массиве. то есть: кот (0) "ТРЕНДЫ" кот (1) "ВОЗМОЖНОСТИ" кот (2) "ЦЕЛЕВЫЕ СЧЕТА" кошка (3) "ДОСТИЖЕНИЯ" кот (4) "LOST SALES" кот (5) "ЦИТАТЫ"

На основании этого возврата я хочу создать массивы для каждого значения выше. то есть: ТЕНДЕНЦИИ (0) ВОЗМОЖНОСТИ (0) TARGETACCOUNTS (0) ДОСТИЖЕНИЯ (0) LOSTSALES (0) ЦИТАТЫ (0)

Обратите внимание, что значения, возвращаемые в массиве cat, могут изменяться, поэтому жесткое кодирование имен массивов недопустимо.

Я искал код, чтобы сделать это безрезультатно. У любого есть идеи или код о том, как это сделать.

Заранее спасибо.

Mike

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы можете использовать класс 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. Он и все содержащиеся в нем элементы будут хороши до тех пор, пока они остаются в области действия вашего кода.

Вы также можете использовать метод AppentToTextList NotesItem и методы GetItemValue и SetItemValue вместо использования сокращенной записи LotusScript.

Кроме того, имейте в виду, что метод New в моем примере кода устанавливает только элемент zero-eth каждого массива. Вы можете изменить его, чтобы установить весь массив значений из временного массива, который вы уже загрузили в память, если хотите.

Вы, конечно, должны быть осторожны с типами данных. Аргумент value, который я использовал при вызове contructor, во всех случаях был строкой. Вы можете легко использовать другие типы, как указано в документации для NotesItem .

Последнее предупреждение: это не так эффективно, как использование собственных массивов LotusScript, но в большинстве случаев это, вероятно, не представляет большой проблемы.

0 голосов
/ 03 мая 2018

Нет, имена переменных задаются во время компиляции. Лучше всего использовать ассоциативный массив, который в LotusScript называется списком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...