В этом руководстве описывается процесс нестандартного использования Vizzy для генерации динамических переменных и моделирования. “структура” переменные в среде Vizzy.
Обратите внимание, что в этом руководстве используются неопубликованные функции Vizzy., который потенциально может стать несовместимым с предстоящими выпусками Juno без предварительного уведомления.. Подтверждено, что он эффективен для версии 1.1.109.0, это самая последняя версия для ПК по состоянию на сентябрь. 9, 2023.
Введение
Vizzy включает три основных типа данных.:
- Числа с плавающей запятой
- Векторы, которые состоят из трех чисел с плавающей запятой
- Струны
Более того, Vizzy обеспечивает поддержку типа данных списка., где каждая запись в списке может принадлежать к любому из трех вышеупомянутых типов. Не требуется, чтобы все элементы в списке имели один и тот же тип данных..
Хотя этих типов данных достаточно для большинства целей, существуют сценарии, в которых становится выгоднее хранить список значений без использования типа данных списка..
Почему избегают типа данных списка, вы можете задаться вопросом?
Основной причиной этого выбора является существенный разрыв в производительности.. Несмотря на заявления об улучшении производительности в версии 1.1.109, тип данных списка остается заметно медленным. Моя приверженность этой альтернативной реализации была прочно укоренена к моменту выпуска этой версии..
Более того, Блоки Vizzy, предназначенные для операций со списками, обычно имеют громоздкий размер.. Хотя они могут облегчить понимание, особенно для пользователей, не имеющих опыта программирования, они создают проблемы при создании сложных приложений Vizzy..
Еще одним недостатком является невозможность доступа к спискам через выражения FUNK.. Для более сложных математических выражений, выгодно инкапсулировать вычисления в выражение FUNK, а не создавать их с использованием блоков Vizzy.. Однако, если ваше уравнение основано на списках, этот вариант теряет свою привлекательность.
В области сложных приложений, явно объявленные списки переменных, представленные зелеными блоками, могут стать громоздкими в размерах. – граничащий с абсурдом в некоторых случаях. В таких контекстах, любой метод, способный уменьшить размер этого списка, становится крайне желательным..
Окончательно, стоит отметить, что этот метод позволяет создавать сложные структуры данных, содержащие другие сложные структуры. – а “Список списков,” так сказать. Это представляет собой единственную уникальную возможность этого подхода, которую обычные списки не могут воспроизвести..
Как
Я предполагаю, что вы хорошо разбираетесь в “установить переменную [] к []” Виззи блок. Концепция проста: вы устанавливаете переменную (используя “Создать переменную” кнопка), в результате чего образуется зеленый блок. Впоследствии, вы перетаскиваете этот зеленый блок, чтобы занять первое пустое место в “установить переменную [] к []” блокируйте и укажите справа значение, которое вы хотите присвоить переменной..
Однако, давайте рассмотрим альтернативный сценарий:
Что, если вы решили не определять и не размещать зеленый блок в начальном слоте?? Что, если вместо этого вы решите сделать что-то другое?:
Результат следующий: “Значение ‘1’ присваивается переменной Active_Craft_ID.” Другими словами, он выполняет то же самое действие, что и показано в первом примере..
Сейчас, что делать, если вы не определили переменную Active_Craft_ID’ используя “Создать переменную” кнопка? Хорошо, значение по-прежнему присваивается переменной с именем Active_Craft_ID.’ Однако, становится очевидным, что вы не можете получить это значение через зеленый блок. Я углублюсь в это в ближайшее время.
Но, давайте рассмотрим другой сценарий:
Этот метод также работает ожидаемым образом – к концу, у вас будет десять переменных, названный “Тестирование1” через “Тестирование10,” все наделены ценностью 1.
Сейчас, возникает следующий вопрос: “Как мне получить доступ к переменной, созданной в результате этого процесса??” Естественно, следующий подход не даст желаемого результата:
В данном сценарии, операция присваивает строку “Тестирование1” к переменной “Active_Craft_ID” когда намерением было присвоить значение переменной “Тестирование1” к “Active_Craft_ID.”
Однако, есть решение с помощью FUNK – по умолчанию, когда вы указываете имя переменной в строке FUNK, он интерпретируется как ссылка на переменную. Следовательно, этот подход действительно достигает желаемого результата:
При использовании этого подхода следует учитывать два важных соображения.:
- Выражения FUNK не поддерживают строки., даже при ссылке на переменные. Если вы укажете имя переменной, содержащей строку, и попытаетесь получить к ней доступ через выражение FUNK, результат будет 0. Поэтому, хотя можно назначать строки динамическим переменным, как описано ранее., вы не сможете получить доступ к их значениям, если не создадите зеленый блок для переменной, используя “Создать переменную” кнопка.
- Выражения FUNK предполагают, что переменные по умолчанию являются числами с плавающей запятой., если не указано иное. Если вы сохранили вектор в динамической переменной, вы должны поставить перед именем переменной префикс “в:” чтобы сообщить FUNK, что переменная содержит вектор.
Вот правильный метод доступа к вектору, хранящемуся в динамической переменной.:
Этот код назначит векторы 10 переменные, затем выведите 10 векторы в локальный журнал:
В заключение, Я могу подтвердить, что динамические переменные действительно сериализуются при сохранении крафта., о чем свидетельствует проверка XML-файла. Пока я не проводил проверку, чтобы убедиться, что значения восстановлены точно, Я обладаю высокой степенью доверия, примерно 99.9%, что они действительно восстанавливаются правильно.
Более сложные темы
Создание “вспомогательные функции” чрезвычайно ценен для упрощения процесса извлечения определенных значений из коллекции похожих значений.. Вот пример того, как это можно сделать:
Все эти функции работают с одним параметром., которая должна быть строкой, представляющей набор взаимосвязанных переменных, и они возвращают определенную переменную из этой группы.
Когда дело доходит до выполнения математических операций с динамическими переменными, я рекомендую использовать выражения FUNK, когда это возможно., как показано здесь:
Вы можете добиться того же результата, используя “формат” блок вместо “Присоединиться” блокировать, хотя стоит отметить, что “Присоединиться” блок обычно считается быстрее. Вот пример использования “формат” заблокировать для этой цели:
Это все, чем мы делимся сегодня для этого. Юнона: Новое происхождение гид. Это руководство было первоначально создано и написано мрид2. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.