|
Получить первую пару КлючЗначение соответствия | ☑ | ||
---|---|---|---|---|
0
Stim
27.01.22
✎
10:22
|
СоответствиеТест = Новый Соответствие;
СоответствиеТест.Вставить("тест",1); Сообщить(СоответствиеТест[0].Ключ); Ошибка. Почему? Как получить ключ или значение первого элемента коллекции соответствия? |
|||
1
vicof
27.01.22
✎
10:23
|
Потому что соответствие это неупорядоченное множество.
|
|||
2
Kassern
27.01.22
✎
10:24
|
(0) Элементы коллекции:
КлючИЗначение Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы соответствия. Возможно обращение к значению элемента посредством оператора [...]. В качестве аргумента передается значение ключа элемента. |
|||
3
vicof
27.01.22
✎
10:25
|
А есть еще метод получить()
|
|||
4
arsik
гуру
27.01.22
✎
10:28
|
(0) В соответствии есть фишка. Вставленное первым не факт что при переборе "Для каждого … Из … Цикл" будет первым.
(1) Мне кажется все же упорядоченное. Но оно вроде как по хешам ключей упорядочивает. |
|||
5
Dmitrii
гуру
27.01.22
✎
10:29
|
(0) Только обходом в цикле Для Каждого. Но в каком порядке будут выбраны элементы коллекции - никто не знает. В первой итерации цикла может оказаться не тот элемент, который ты первым туда добавлял.
|
|||
6
Stim
27.01.22
✎
10:30
|
(3) а я не знаю ключа. Он формируется программно
|
|||
7
Dmitrii
гуру
27.01.22
✎
10:32
|
Добавляй второе соответствие. Где ключом будет индекс (порядковый номер) элемента, а значением - ключ из твоего соответствия.
|
|||
8
Dmitrii
гуру
27.01.22
✎
10:33
|
+ к (7) Или массив. Всё равно. Массив даже наверное лучше. Он упорядочен и быстрее получает значение по индексу.
|
|||
9
Stim
27.01.22
✎
10:39
|
(8) мне нужно хранить связанную пару значений, а не одно
|
|||
10
vicof
27.01.22
✎
10:42
|
(9) Вывод: архитектура какашка)
|
|||
11
Dmitrii
гуру
27.01.22
✎
10:49
|
(9) И что?
Чем плох массив из ключей соответствия?
|
|||
12
NorthWind
27.01.22
✎
11:13
|
(0) никак. Соответствие это аналог map в С++, словарь данных. Предполагается, что данные будут извлекаться только по ключу и никак иначе, никакого первого и последнего там нет. Если нужно извлекать данные по индексу, то это к другим коллекциям, например к старой доброй таблице значений. Там можно обратиться по номеру строки, а в случае чего через НайтиСтроки поискать и по ключу.
|
|||
13
Kassern
27.01.22
✎
11:14
|
(11) может он для примера написал СоответствиеТест.Вставить("тест", 1); а на деле получает hhtp ответ джисоном и пихает в соответствие. Что там внутри не знает, может какая то хитрая динамическая генерация тегов. Только вот смысла первого ключа я понять не могу. Ну переберите Для каждого ТекСвязка По Соответствие Цикл Возьмите первую связку и прервите
|
|||
14
Kassern
27.01.22
✎
11:15
|
Только особого смысла в этом нет, должно быть понимание, какие ключи есть в соответствии и уже с ними идет работа. Не факт, что именно в первой полученной перебором связке будет нужное вам значение.
|
|||
15
Dmitrii
гуру
27.01.22
✎
11:51
|
(13) >> может он для примера написал СоответствиеТест.Вставить("тест", 1); а на деле получает hhtp ответ джисоном и пихает в соответствие.
Конечно это возможно. Фиг его знает. Но если возникла задача получить именно первый элемент из коллекции, вероятнее всего, есть какой-то определенный порядок добавления элементов в коллекцию. В противном случае задача не имеет смысла. Другой вопрос, что алгоритм может быть таким, что нет возможности вкорячить туда добавление элементов в массив ключей одновременное с добавлением элементов в соответствие. Если же соответствие - это результат возвращаемый при выполнении какого-то метода платформы, то решение с массивом ключей не возможно. Но тогда и смысла нет получать именно первую пару. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |