![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2009
Сообщений: 56
|
Напишите рабочий пример замыкания в as3. Что-то не получается у меня воспроизвести эту штуку
![]() |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main():void { var arr:Array = [1, 2, 3]; var x:int = 10; var arr2:Array = calc(arr, function(elem:int):int { return x * elem } ); trace(arr2); // 10, 20, 30 } private function calc(arr:Array, method:Function):Array { var array:Array = []; for (var index:int = 0; index < arr.length; index++ ) { array.push(method(arr[index])); } return array; } } } хотя.. инты всеравно передаются не по ссылке, надо помудрёней пример придумать.
__________________
Reality.getBounds(this); |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Во.
package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { private var _arrLength:int = 3; public function Main():void { var arr:Array = [1, 2, 3]; calc(function(modifier:int, index:int):void { arr[index] *= modifier } ); trace(arr); // 10, 20, 30 } private function calc(method:Function):void { var mod:int = 10; for (var i:int = 0; i < _arrLength; i++ ) { method(mod, i); } } } } КорДум, анонимная функция еще не closure. Фишка в сохранении контекста, то есть в моем примере анонимка, исполняясь в calc, "помнит" ссылку на arr. Это и есть замыкание.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
а, кстати, что плохого в замыкании кроме того, что она анонимка?
|
|
|||||
|
Недавно экспериментировал с замыканиями и scope'ами, и в итоге накрутил вот такое:
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
жуть какая)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:20. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|