Что нового

Вызыв функции в цикле

winkot

Новичок
Сообщения
190
Репутация
0
Почему не работает повторный вызов функции?
Код:
While 1
    Zvuk()
    Sleep(10000)
WEnd

Func Zvuk()
    Beep(500, 500)
    Exit
EndFunc   ;==>Zvuk

Основной цикл вызывает функцию Zvuk(). Она срабатывает, но после Sleep(10000) нет. Если убрать в ней Exit, то повтор работает. А с Exit - нет. Понятно, что в этом случае функция выгружается, но ведь после Sleep(10000) происходит повторный ее вызов. Но она уже не работает. Почему?
 

Oki

Продвинутый
Сообщения
452
Репутация
63
Почему не работает повторный вызов функции?
Код:
While 1
    Zvuk()
    Sleep(10000)
WEnd

Func Zvuk()
    Beep(500, 500)
    Exit
EndFunc   ;==>Zvuk

Основной цикл вызывает функцию Zvuk(). Она срабатывает, но после Sleep(10000) нет. Если убрать в ней Exit, то повтор работает. А с Exit - нет. Понятно, что в этом случае функция выгружается, но ведь после Sleep(10000) происходит повторный ее вызов. Но она уже не работает. Почему?
Потому что Exit предназначен для аварийной остановки всего скрипта, которая здесь излишняя, судя по всему. Если хочется красивого выхода из функции с церемонией, то нужна другая строка.
Код:
Return
Ссылка на справку здесь, а не по клику в коде.

Но без особой надобности функцию можно завершать и без церемоний.
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
63
Не писать ничего. Просто сразу переходить к строке EndFunc. По вышеприведённой ссылке на справку есть пример скрипта, в котором из 6 функций Return используется лишь в двух из них. Когда нет причин (кроме удовольствия от церемониала) для этой строки, её можно попросту не использовать.
 

All2khoff

Продвинутый
Сообщения
376
Репутация
68
Ребята говорят что вот так достаточно.
Код:
While 1
    Zvuk()
    Sleep(10000)
WEnd

Func Zvuk()
    Beep(500, 500)
EndFunc   ;==>Zvuk
 
Верх