Товарищи, подскажите, может ли массив быть элементом хеш-карты? Бейсик не спорит с ситуацией типа Map("key") = array(), но потом непонятно как обратится к элементу массива через карту и ключ.
Array как элемент Map
Сообщений 1 страница 13 из 13
Поделиться228.05.2024 06:15:05
Map1() \array(1) - это элемент массива карты. Но надо создать структуру с массивом. В одном элементе карты будет весь массив.
Поделиться328.05.2024 07:24:05
Map1() \array(1) - это элемент массива карты. Но надо создать структуру с массивом. В одном элементе карты будет весь массив.
это напрашивалось, но не то.
Поделиться428.05.2024 08:17:13
это напрашивалось, но не то.
а что то?
Поделиться528.05.2024 08:32:45
а что то?
я же в первом сообщении написал. То - это когда массив является элементом карты с доступом к нему по ключу. Как таблицы в LUA или словарь питона.
Поделиться630.05.2024 15:20:21
То - это когда массив является элементом карты с доступом к нему по ключу
каким образом к массиву можно обратиться по текстовому ключу??????????
если придираться к словам, то в карте к массиву ты обращаешься по ключу карты, как ты и хочешь, а к элементу массива можно только по индексу
AZJIO всё тебе написал как надо
Поделиться730.05.2024 17:11:50
но не то.
то
я же в первом сообщении написал
может написал не то, перечитай.
Отредактировано AZJIO (30.05.2024 17:13:52)
Поделиться801.06.2024 21:35:56
каким образом к массиву можно обратиться по текстовому ключу??????????
если придираться к словам, то в карте к массиву ты обращаешься по ключу карты, как ты и хочешь, а к элементу массива можно только по индексу
AZJIO всё тебе написал как надо
Например, в LUA:
map = {num = {5,6}, bg = {7,8}}
str = "num"
print(map[str][1]) --вывод 5
str = "bg"
print(map[str][2]) --вывод 8
map["new"] = {3,4}
str = "new"
print(map[str][2]) --вывод 4
то есть мы имеем доступ к вложенным таблицам по текстовому ключу, а к элементу этой таблицы - по индексу.
Отредактировано server1982 (01.06.2024 21:40:24)
Поделиться901.06.2024 21:39:44
то
может написал не то, перечитай.
Отредактировано AZJIO (30.05.2024 17:13:52)
не то, потому что я заранее должен создать структуру с массивом. А если я получаю массив в процессе, и заранее не знаю про него ничего? Может его и не будет вообще. Выше я написал пример из LUA, там я просто добавляю в словарь новую таблицу с ключом в любой момент.
Поделиться1002.06.2024 00:04:44
server1982
LUA - интерпретатор кода, а PureBasic - компилятор в машинный код.
Да, надо создать заранее формат данных, в чём проблема? Можно не заполнять массив ничем. Можно на ходу добавить элемент в карту. У массива также есть очистка FreeArray(), Redim - изменения размера, Dim - пересоздание массива. Пустой массив создаётся при добавлении элемента карты, то есть создание на ходу, CopyArray() - копирование массива, если он уже создан, то скопировать в элемент карты.
потому что я заранее должен создать структуру с массивом
структура это объявление отступов к элементам в объекте. Объявление структуры ничего не создаёт кроме отступа. При создании элемента карты по лекалам объявления структуры создаётся указатель на массив и отступ 0, так как массив в структуре первый и единственный. Когда ты указал элемент карты и элемент массива, то происходит обращение к массиву от указателя элементы карты со сдвигом 0 и сдвигом по индексу. Структура нужна только для целеуказания, а создаётся она в момент объявления/создания элемента.
Отредактировано AZJIO (02.06.2024 01:51:32)
Поделиться1102.06.2024 08:22:04
server1982
LUA - интерпретатор кода, а PureBasic - компилятор в машинный код.
Да, надо создать заранее формат данных, в чём проблема? Можно не заполнять массив ничем. Можно на ходу добавить элемент в карту. У массива также есть очистка FreeArray(), Redim - изменения размера, Dim - пересоздание массива. Пустой массив создаётся при добавлении элемента карты, то есть создание на ходу, CopyArray() - копирование массива, если он уже создан, то скопировать в элемент карты.структура это объявление отступов к элементам в объекте. Объявление структуры ничего не создаёт кроме отступа. При создании элемента карты по лекалам объявления структуры создаётся указатель на массив и отступ 0, так как массив в структуре первый и единственный. Когда ты указал элемент карты и элемент массива, то происходит обращение к массиву от указателя элементы карты со сдвигом 0 и сдвигом по индексу. Структура нужна только для целеуказания, а создаётся она в момент объявления/создания элемента.
Отредактировано AZJIO (Сегодня 01:51:32)
я понял, точно также нет, но можно немного по другому. А если элемент такого массива тоже структура, не будет проблем? Что-то из разряда Map1() \array(1)\name?
Поделиться1202.06.2024 09:45:35
точно также нет
мне пофиг...
не будет проблем? Что-то из разряда Map1() \array(1)\name?
нет
Хоть Map1()\array(1)\name\Map1()\array(1)\name, но на форуме была тема глюка из-за слишком много вложений и Фред устранял проблему.
Поделиться1303.06.2024 21:11:32
нет
Хоть Map1()\array(1)\name\Map1()\array(1)\name, но на форуме была тема глюка из-за слишком много вложений и Фред устранял проблему.
понял, спасибо
Похожие темы
Существует ли модуль создания графиков? | Вопросы по PureBasic | 28.08.2020 |
Улучшение справки | PureBasic для Windows | 18.01.2025 |