.. _blockly-variables: ========== Переменные ========== .. image:: variables-images/image-7.png В редакторе логики Blockly, как и в обычном программировании, используются локальные и глобальные переменные. Переменная представляет собой именованное значение, которое можно получать и изменять, обращаясь к нему по имени. Переменная, простыми словами, это вместилище данных. В нее можно положить любое значение, например число, строку или другой тип данных. Еще более простой пример, представим обычный ящик, внутри которого лежит груша. Ящик является переменной, содержащий данные - грушу. .. note:: Объект также является переменной. Важное преимущество использования переменных перед использованием конкретных значений - исключение возможности опечатки при повторном использования. Они создаются пользователем и не ограниченны количеством. Глобальные переменные --------------------- Глобальные переменные это переменные, обращение к которым возможно из любой части кода. В случае с Blockly, обращение к глобальным переменным можно осуществить из любой функции и из любого блока в рабочей области. Чтобы **создать** глобальную переменную, откройте категорию блоков **"Переменные"**. В новом проекте эта категория содержит всего одну кнопку, с помощью которой можно **"Создать переменную..."**. Нажмите ее и у вас откроется модальное окно, где необходимо будет имя новой переменной. После этого, в этом же разделе появится три новых блока - **"Присвоить..."**, **"Увеличить на..."** и созданный блок получения переменной. .. image:: variables-images/image-1.png Для каждого блока переменной доступны три функции, которые вызываются нажатием на имя переменной в блоке: .. image:: variables-images/image-3.png * **выбрать другую переменную** - блок переменной всего лишь оболочка для переменной. Если необходимо, пользователь может поместить в конкретный блок другую переменную, выбрав её из выпадающего списка. * **переименовать** - изменяет имя переменной на глобальном уровне. Таким образом, каждый блок, который использует эту переменную так же изменится, соответствуя внесенным изменениям. * **удалить** - удаление переменной. Также удаляются все блоки, использующие эту переменную. Пример ~~~~~~~~ .. image:: variables-images/image-4.png В данном примере показано использование переменной в качестве массива для сбора списка выбранных объектов. Локальные переменные --------------------- Локальные переменные это переменные, которые хранятся в пределах своего блока (В котором они находятся) и работают только с ним. Их использование помогает пользователю не создавать большое количество переменных, которые будут не нужны после выполнения одной функции. Также, в некоторой степени, локальные переменные экономят вычислительные мощности вашего компьютера. В Blockly, прямое использование локальных переменных немного ограниченно. В платформе они встроены в блоки функций и циклов и не могут быть изменены, также как и не могут быть созданы. Пример 1 ~~~~~~~~ .. image:: variables-images/image-5.png В данном примере показан блок **"Объект начал столкновение"** категории **"События"**. У этого блока по умолчанию заданы локальные переменные **первый объект** и **второй объект** с которыми пользовать не может взаимодействовать вне этого блока. В нашем случае, в качестве указанных объектов для столкновения указаны два списка. Роль локальных переменных в этой конструкции - это выделение тех двух объектов из списков, которые будут сталкиваться в конкретный момент времени. Пример 2 ~~~~~~~~~~~~~~~~~~ .. image:: variables-images/image-6.png В данной логике мы используем локальные переменные в качестве проверки значения переменной **"Элемент"**. При нажатии на кнопку мы меняем значение переменной **"Элемент"** на цифру **1**. При отжатии на цифру **2**. В блоке события **"Изменение значения"** построим логику таким образом, что бы у нас сверялось старое и новое значение переменной **"Элемент"**. Таким образом, если старое значение больше нового, то цвет куба будет меняться на синий. А если наоборот, то цвет будет меняться на красный. Таким образом, локальные переменные могут выступать в качестве полезных помощников при выстраивания сложной логики, **НО** только в пределах своего блока.