Скинул в личку
проблема при вызове функции
-
Добрый день. Начал изучать BAS пока столкнулся с такой проблемой. в скрипте есть была структура if далее вызов функции_1 else выполнение следующих действий. Захотел усложнить нужно было создать еще одну функцию почти такую же как первая, но немного изменив ее. В итоге просто создал функция_2 и скопировал туда все блоки из функция_1 немного измениф структура функции_2 после этого. В итоге скрипт приобрел вот такую логическую структуру
переменна 1
переменна 2
if переменная 1==true
функция_1
else
if переменна 2==true
функция_2
else
if.......... далее без функцийВ итоге скрипт стал работать не корректно, он может залететь в функция_2 хотя по условию должен быть в Функция_1 а самое главное он не выходит из функции полсе ее завершения. Подскажите что делаю не так? и если причина в том что структура иф иф как написать без нее. Или дело в том, что функцию_2 создал путем копипаста? Или в том что внутри функций есть метки? и их надо менять? И да весь скрипт внутри цикла while. Заранее спс.
-
вот нигде про это не говорится, ни в одном видео обучающем в инете. Да сам уже докопался, изменил названия меток внутри функции_2 и заработало.
-
@helper00700 said in проблема при вызове функции:
вот нигде про это не говорится, ни в одном видео обучающем в инете
Да как бы логично, что не должно быть одинаковых названий. Это как одинаковые адреса в городе.
-
-
@UserTrue said in проблема при вызове функции:
Да как бы логично, что не должно быть одинаковых названий. Это как одинаковые адреса в городе.
Область действия меток - весь скрипт. Можно же предположить, что область действия - отдельная функция?
-
@smeckoi77 said in проблема при вызове функции:
Область действия меток - весь скрипт. Можно же предположить, что область действия - отдельная функция?
Чего ? Предположить можно что угодно. Я вообще не использую метки
-
@smeckoi77 said in проблема при вызове функции:
Можно же предположить, что область действия - отдельная функция?
Я, кстати, тоже считал, что метки имеют локальную область видимости(функция), а не глобальную(весь скрипт).
Но я не использую метки и не советую никому. Метки - это самый легкий способ выстрелить себе в ногу.
-
@sergerdn said in проблема при вызове функции:
Я, кстати, тоже считал, что метки имеют локальную область видимости(функция), а не глобальную(весь скрипт).
В бас вообще нет такого понятия как область видимости
-
@sergerdn said in проблема при вызове функции:
Не согласен, но холивар разводить не буду.
Аха, отличный аргумент. Вы экстрапалируете свои представления и ожидания с другим платформ/языков на БАС и потом удивляетесь, что в бас это так не работает, но в бас нигда не заявлено что в нем это должно работать подобным образом.
-
@UserTrue said in проблема при вызове функции:
Аха, отличный аргумент.
Вероятно, я имею право иногда высказывать свое мнение без аргументации.
@UserTrue said in проблема при вызове функции:
... что в бас это так не работает.
В режиме записи область видимости переменных глобальная, а в режиме запуска - локальная.
Метки в браузере имеют глобальную область видимости.
-
@sergerdn said in проблема при вызове функции:
В режиме записи область видимости переменных глобальная, а в режиме запуска - локальная.
Это тоже не верно в режиме записи работает только один поток, область видимости всегда в рамках потоках.
Что касается функции onApplicationStart то в запуске она тоже исполняется в отдельном потоке до запуска остальных функции, а в записи она исполняется в этом же потоке что и остальной код, это единственный нюанс который тут естьА что за метки в браузере я не знаю
-
@UserTrue said in проблема при вызове функции:
Это тоже не верно в режиме записи работает только один поток, область видимости всегда в рамках потоках.
Переменные меняют область видимости при:
- запуск в режиме записи(глобально по отношению к функциям)
- запуск в один поток (локально по отношению к функциям)
А есть еще отдельная глобальная область видимости для глобальных переменных. А еще есть область видимости ресурсов(глобальная).
Честно говоря не совсем понимаю, что ты так уцепился за мое мнение, что в BAS есть область видимости переменных.
-
@sergerdn said in проблема при вызове функции:
Честно говоря не совсем понимаю, что ты так уцепился за мое мнение, что в BAS есть область видимости переменных.
Потому что ее нет)) Глобальные переменные если только, но разговор был про области видимости функций.
Потом не удивляетесь что бас работает не так как вы думали xD
-
@UserTrue said in проблема при вызове функции:
Потому что ее нет)) Глобальные переменные если только, но разговор был про области видимости функций.
Глобальные переменные это и есть область видимости.
@UserTrue said in проблема при вызове функции:
В бас вообще нет такого понятия как область видимости
Я отвечал на это утверждение. Что, как минимум, существует область видимости в разрезе переменных и ресурсов, что тоже, впрочем переменные. Еще и метки, предположительно, всегда имеют глобальную область видимости.
Вероятно, ты имел в виду, что в BAS нет понятия область видимости функций. Мое мнение, что она есть и она всегда глобальная. Из любого места можно всегда вызвать любую функцию.
@UserTrue said in проблема при вызове функции:
Потом не удивляетесь что бас работает не так как вы думали xD
Безусловно, все мы люди и все мы ошибаемся. И никто не исключение.
Но почему ты взял на себя миссию в это топике обязательно меня убедить, что твое мнение должно совпадать с моим - мне не понятно.
Так как каждый человек имеет право на свое, пусть даже иногда и ошибочное, мнение.
-
@sergerdn said in проблема при вызове функции:
Я отвечал на это утверждение. Что, как минимум, существует область видимости в разрезе переменных и ресурсов, что тоже, впрочем переменные
Область видимости это как правило в первую очередь область видимости функции и процедур, затем циклов и условий, а также блоков.
Глобальные переменные это скорее частный случай уровня всего приложения. Что касается ресурсов то это вообще просто API для синхронной работы с общими данными. С тем же успехом можно назвать базу данных глобальной областью видимости.Мое мнение, что она есть и она всегда глобальная
Глобальная область видимости подразумевает наличие локальной, которой в БАС в сущности нет.Но почему ты взял на себя миссию в это топике обязательно меня убедить,
Нет у меня никакой миссии и философствовать на эти темы я не стану. Форум он то форум, что это место для дискуссий.
-
@UserTrue said in проблема при вызове функции:
Кроме того глобальная область видимости подразумевает наличие локальной, которой в БАС в сущности нет.
Вероятно, все таки есть локальная область видимости переменных.
Переменная, созданная внутри функции, видна только внутри функции, если это не режим записи в BAS.
Иначе говоря такая переменная имеет свою локальную(внутри функции) область видимости.Такая переменная, вероятно, уничтожается движком BAS, когда функция заканчивает работу. Уничтожений переменных внутри функции только предположение, настолько в исходники я не погружался.
-
@sergerdn said in проблема при вызове функции:
Переменная, созданная внутри функции, видна только внутри функции, если это не режим записи в BAS.
Иначе говоря такая переменная имеет свою локальную(внутри функции) область видимости.Если эта функция не асинхронная, которая в сущности является другим потоком, то область ее видимости так же весь поток