Можно ли использовать группы для эмуляции структур данных класса или структуры из других языков
Есть ли в LiveCode структура данных, которую можно использовать в качестве "держателя" для связанных данных, позволяя мне обрабатывать ее коллективно? Я пришел из Java / Javascript / C фона, поэтому я искал структуру данных типа Class или Struct.
Я нашел примеры групп, которые, похоже, обладают некоторыми из этих функций, но мне кажется, что я изгибаю язык, чтобы удовлетворить свои потребности.
В качестве конкретного примера, предположим, что у меня на экране есть поле изображения, которое будет случайным образом отображать изображение и при нажатии воспроизводить соответствующий аудиоклип. Я хотел бы создать список "структур", содержащих путь к изображению и путь к соответствующему аудиоклипу, и использовать эти данные для заполнения поля изображения и решить, какой аудиоклип воспроизводить.
Будет ли группа правильной структурой для использования в этом случае? Или я подхожу к этому способом, который не совсем соответствует тому, как работает LiveCode?
3 ответа
Массивы в LiveCode на самом деле являются ассоциативными (например, хэш-карты). Ключ связан со значением. Значение может быть также массивом.
Глава 5.5.7 Руководства пользователя говорит
Элементы массива могут содержать вложенные или вложенные элементы, что делает их многомерными. Этот тип массива идеально подходит для обработки иерархических структур данных, таких как деревья или XML. Чтобы получить доступ к подэлементу, просто объявите его, используя дополнительный набор квадратных скобок.
put "ABC" into myVariable["myKeyName"][“aChildElement”]
см. также Как хранить картинки в стопке?
Требуется немного привыкнуть, но мир xTalk намного проще и более открыт, чем любой обычный процедурный язык. Многое из того, что вам когда-то приходилось делать, больше не требуется.
Поэтому, когда splash21 сказал, что вы можете хранить все ваши изображения и звуковые ссылки в собственном свойстве, он действительно сказал, что среда LiveCode содержит встроенную функциональность высокого уровня, которая делает такие вещи мгновенно доступными, и единственное, что от вас требуется, это призвать их, и они просто работают.
Единственный способ оценить это - сделать несколько простых программ, чтобы действительно увидеть, что возможно. Подайте заявку. Все, что вы упомянули, может быть реализовано с помощью дюжины строк кода в одном обработчике. Я рекомендую вам присоединиться к списку использования LiveCode и форумам. Сообщество энергично и готово помочь, часто с полномасштабными решениями конкретных проблем, но что более важно, в качестве руководства и наставника для новых пользователей
Крейг Ньюман
Дэйв - Я надеюсь, что в ближайшем будущем будет реализован похожий на структуру контейнер. Между тем, как упоминалось в splash21, вы можете использовать пользовательские свойства (или, что еще лучше, наборы пользовательских свойств), чтобы делать то, что вы хотите. Это даст вам псевдоструктуру для каждого объекта, и вы сможете реализовать спецификации файла и звука в свойствах. И если вы используете это в сочетании с объектом поведения, вы окажетесь очень близко к реальному наследуемому образованию классов.