Последний ключ в упорядоченной структуре

Я строю упорядоченную структуру

stMbr = [:];

Добавляется много-много полей.

stMbr.Name = "";
stMbr.Address = "";
stMbr.City = "";
...

В конце концов я попал в последнее поле, которое добавляется. После того, как упорядоченная структура будет построена, мне нужно будет ее обработать.

for (key in stMbr)  {
   ...
}

Когда я обрабатываю последнюю клавишу, мне нужно сделать это, обратите внимание, что я нажал последнюю клавишу.

Есть ли способ узнать, какой последний ключ в упорядоченной структуре?


person James A Mohler    schedule 04.06.2019    source источник
comment
Что вы имеете в виду под упорядоченной структурой? Вы имеете в виду порядок сортировки ключевых значений?   -  person Sathish Chelladurai    schedule 06.06.2019
comment
Более новые версии ColdFusion имеют тип данных, называемый структурой порядка. Это похоже на структуру, но порядок ключей сохраняется. Он создается с помощью [:] или более подробного StructNew("Ordered").   -  person James A Mohler    schedule 06.06.2019


Ответы (1)


Оказывается, это не так уж и сложно. Мне просто нужно было использовать функцию-член keylist()

if (key == listlast(stMbr.keylist()))  {
  ...
}

Обновленный ответ

Вместо повторной обработки того же списка просто сохраните последний ключ

lastKey = listlast(stMbr.keylist());


for (key in stMbr) {
...

if (key == lastKey)  {
  ...
  }
}
person James A Mohler    schedule 04.06.2019
comment
Это не очень эффективно, не так ли? Что вы хотите сделать с последним элементом? Когда есть упорядоченная структура, вы можете знать, какой элемент является последним, и обрабатывать его. - person Bernhard Döbler; 05.06.2019
comment
Я передаю упорядоченные структуры в генератор csv. Последний должен иметь разделитель строк, а не разделитель столбцов. Следовательно, мне нужно знать, когда я на последнем. - person James A Mohler; 05.06.2019
comment
Да, но вы можете сделать это перед циклом, чтобы он выполнялся только один раз. Редактировать... что... вы уже поняли. Неважно. Продолжать :-) - person SOS; 05.06.2019