![]() |
Инкапсуляция переменных и Рекурсивный вызов функций.
Добрый день, Флешеры!
Для меня было открытием то, что ActionScript не знает про инкапсуляцию данных. Смотрите i=10; t=20; r=30; r=Fun(i); trace("i="+i+" t="+t+" r="+r); function Fun(i){ i=100; t=200; return r; } TRACE Выдаст : i=10 t=200 r=30 С переменной i - все нормально. Но переменная t, определенная вне функции Fun() внутри этой функции переопеделилась. в строке return r - вообще явная идеологическая ошибка, но Актион Скрипт воспринимает внешние переменные также как и внутрении. Меня это очень сильно удивило :eek: и даже разозлило :mad: , но что поделаешь, надо придумать ка же с этим бороться :confused: Как делать рекурсивный вызов функций ? Ведь кроме передаваемых параметров (которые как видим инкапсулируются, в функции надо сохранять и кучу других промежуточных данных и чтобы при выходе из рекурсии они восстановились.... Как ВЫ делаете рекурсию ??? СПАСИБО БОЛЬШОЕ !!!! |
Ставь var, когда определяешь переменные в функции.
|
Ух тыыы! Я - полный .... нет тощий...
Спасибо вобщем. А я мучался. Думал через массив делать.
СПАСИБО ! |
советую для рекурсий использовать arguments.callee
function x() { this.a=arguments; this.i=this.a[0]; if(this.i>10) { return } else { trace(this.i); this.a.callee(this.i++); } } |
| Часовой пояс GMT +4, время: 09:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.