Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.12.2012, 22:06
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 1  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
По умолчанию Как свойство класса в функции, использовать внутри метода-конструктора?

Код AS3:
package
{
 final public class ExampleClass
 {
   private var arrayComponent:Vector<String> = Vector<String>();
   private var count:uint
 
   public function ExampleClass(count:uint)
   {
     this.count = count;
     this.ExecuteLocalFunction = function(i:uint):Boolean
     {
       this.arrayComponent.push(Math.random())
       return false;
     }
   }
 
   private function set ExecuteLocalFunction(f:Function):void
   {
     var i:uint = this.count;
     while(--i>-1)
     {
       if(f(i)) break;
     }
   }
 
 
 }
}

Почему выдаёт ошибку, что свойство this.arrayComponent.push не существует? хотя на самом деле это свойство объявлено в классе.
Код:
TypeError: Error #1010: Термин не определен и не имеет свойств.

Старый 21.12.2012, 22:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Весь этот код - сплошная ошибка.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.12.2012, 22:39
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 3  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
прошу прощения за своё ламерство

Старый 21.12.2012, 22:53
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Что вы получить-то хотели в итоге?
__________________
тут я

Старый 21.12.2012, 22:57
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от yasha005 Посмотреть сообщение
прошу прощения за своё ламерство
Извиняться не надо. Я просто не понимаю, как вы ошибку эту получили. Это код вообще не должен компилироваться.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.12.2012, 22:57
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 6  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Цитата:
Сообщение от КорДум Посмотреть сообщение
Что вы получить-то хотели в итоге?
в итоге мне надо неоднократно использовать метод ExecuteLocalFunction в классе ExampleClass, передавая ему в качестве параметра различные функции.

Другими словами: обработать различные функции одним методом

Добавлено через 2 минуты
Цитата:
Сообщение от iNils Посмотреть сообщение
Извиняться не надо. Я просто не понимаю, как вы ошибку эту получили. Это код вообще не должен компилироваться.
Если внутри функции, которая передаётся в качестве параметра методу ExecuteLocalFunction, не использовать свойство this.arrayComponent, то всё хорошо компилируется без ошибок

Старый 21.12.2012, 23:14
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
package {
 
	public class Executor {
		private var _componentList:Vector.<Number>;
		private var _count:uint;
 
		public function Executor(count:uint) {
			_count = count;
			_componentList = new <Number>[];
 
			execute(foo);
		}
 
 
		private function execute(foo:Function):void {
			for (var i:uint = 0; i < _count; i++) {
				if (foo(i)) {
					break;
				}
			}
		}
 
 
		private function foo(number:Number):Boolean {
			_componentList.push(number);
			return false;
		}
	}
}
Ну вот так, что ли.
__________________
тут я

Старый 21.12.2012, 23:28
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 8  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Цитата:
Сообщение от КорДум Посмотреть сообщение
Код AS3:
package {
 
	public class Executor {
		private var _componentList:Vector.<Number>;
		private var _count:uint;
 
		public function Executor(count:uint) {
			_count = count;
			_componentList = new <Number>[];
 
			execute(foo);
		}
 
 
		private function execute(foo:Function):void {
			for (var i:uint = 0; i < _count; i++) {
				if (foo(i)) {
					break;
				}
			}
		}
 
 
		private function foo(number:Number):Boolean {
			_componentList.push(number);
			return false;
		}
	}
}
Ну вот так, что ли.


Спасибо, мысль интересная, но тогда в этом случае ещё и придётся передавать в метод execute ещё и переменные (например в качестве объекта), объявленные внутри метода Executor.
p.s. меня это навеяло на мысль, что проще будет использовать шаблон проектирования Декоратор или Компановщик

Старый 21.12.2012, 23:30
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
но тогда в этом случае ещё и придётся передавать в метод execute ещё и переменные
Ничего не понял. Я всего лишь правильно и красиво переписал ваш код.
__________________
тут я

Старый 21.12.2012, 23:36
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 10  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Цитата:
Сообщение от КорДум Посмотреть сообщение
Ничего не понял. Я всего лишь правильно и красиво переписал ваш код.
Спасибо, ваш код мне помог направить ход моих мыслей по созданию моего приложения в нужное русло

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.