Перейти к содержанию

Локальные переменные, или Как изолировать переменные листов событий друг от друга


Рекомендуемые сообщения

Это может показаться очевидным, но многие могут упустить это из виду.

Локальные переменные

Уверен, у каждого была такая ситуация — глобальных переменных становится так много, что потом хрен разберешь, какой тебе нужен именно сейчас. А ведь пользуемся мы ими только в одном листе событий(Event Sheet. Далее просто ЛС). Для этого существуют локальные переменные

Где они могут находиться?

  1. Под событиями. Самая простая форма локальной переменной.
    image.png
    Заметьте — переменная существует только внутри нашего [On start of layout]'а. За ним вы не сможете её использовать. Зато это могут его потомки(то есть его дочерние, дочерние дочерних, и т.д. событий)
     
  2. В функциях. Я не буду упоминать переменные под событиями, т.к. это будет повторением 1 способа. Я говорю об аргументах(параметрах) функций. По сути, это тоже локальные переменные, но могут быть изменены вызовом самой функции. Далее работают так же, как и в первом способе(наследственность у потомков)
    image.png
  3. В группах. Пожалуй, это самая удобная штука — с помощью неё можно отделить (логически и "технически") куски кода друг от друга.
    image.png
    А если оборачивать целые ЛС  в группы, то можно сделать их изолированными(по большей части) друг от друга.
    image.png
    На примере сверху видно, что в текущем ЛС можно изменить переменную, пришедшую из другого листа событий. А переменную из группы нельзя. Ни с наружи своего ЛС, ни тем более в другом.

А что делать, если нужно достать локальную переменную из группы где-то в другом месте? И тут на помощь приходят Функции.

Они как шпионы — могут сидеть в какой-нибудь группе, и передавать информацию наружу, а также изменять её внутри. Ведь функции всегда глобальные — неважно, снаружи  где-нибудь в коде, или внутри группы. Так можно написать некий мост:
image.png 

Однако есть опасность такого подхода — может стать очень много неупорядоченных функций. Некоторые советы: не делайте функцию для каждой отдельной переменной, и желательно добавляйте обозначающие префиксы.

Что ж, надеюсь вам будет полезен сей мини-урок, и я не зря его так долго писал.

 - ПОМЕЧАЙТЕ МОЙ ОТВЕТ КАК "РЕШЕНИЕ", ЕСЛИ РЕШИЛ ВАШУ ПРОБЛЕМУ!

 - Уж извините, что я такой болтун. Хочешь печеньку (´• ω •`) っ🍪 ?

Спойлер

GreasyFork: https://greasyfork.org/ru/users/848173-hapetu-dev

Моя новелла(а что? Я подросток, мне можно:lol3:https://ranobelib.me/vzlomat-drugoi-mir

Мой канал с экспериментами C3: https://www.youtube.com/channel/UChRCgL3VWvA3wVWFXmPlfpA

Мой канал с анимациями: https://www.youtube.com/channel/UCJMQ2HmVixizDmetOjZOQLQ

 

Ссылка на комментарий
Поделиться на другие сайты

про локальные переменные спрайты не сказал

а также можно использовать не только префиксы, но и категории, как мне подсказали
а вообще это конечно не удобно, что все функции стакаются в одном месте, так как у каждого класса должен быть свой гет\сет по хорошему. но благодаря категориям можно сразу посмотреть все функции по названию категории

ну и жаль, что нельзя заприватить функции

image.png image.png

а также можно упомянуть плагин глобалВарс

Изменено пользователем Aventiy
Ссылка на комментарий
Поделиться на другие сайты

@Aventiy Точно, про это я забыл. Ну, завтра отредачу, добавлю недобавленное. А сейчас я спать

 - ПОМЕЧАЙТЕ МОЙ ОТВЕТ КАК "РЕШЕНИЕ", ЕСЛИ РЕШИЛ ВАШУ ПРОБЛЕМУ!

 - Уж извините, что я такой болтун. Хочешь печеньку (´• ω •`) っ🍪 ?

Спойлер

GreasyFork: https://greasyfork.org/ru/users/848173-hapetu-dev

Моя новелла(а что? Я подросток, мне можно:lol3:https://ranobelib.me/vzlomat-drugoi-mir

Мой канал с экспериментами C3: https://www.youtube.com/channel/UChRCgL3VWvA3wVWFXmPlfpA

Мой канал с анимациями: https://www.youtube.com/channel/UCJMQ2HmVixizDmetOjZOQLQ

 

Ссылка на комментарий
Поделиться на другие сайты

В 04.12.2021 в 17:38, HAPETU сказал:

Они как шпионы — могут сидеть в какой-нибудь группе, и передавать информацию наружу

А если группа не активна? Вроде бы шпионству конец.

Хороший урок, вроде бы лучше понял, чем где либо.

Вот только походу, я как обходился только глобальными переменными, так и дальше буду обходиться)

Всёш работает и нет путаницы :pardon:

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...