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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.07.2013, 21:40
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 1  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
По умолчанию RobotLegs2 объявление классов

Не могу до конца разобраться и не могу не чего найти по вопросу, что именно делают методы в конце карты внедрения:
Код AS3:
1)super.injector.map(Class).asSingleton
2)super.injector.map(Class).getProvider
3)super.injector.map(Class).hasProvider
4)super.injector.map(Class).locally
5)super.injector.map(Class).seal
6)super.injector.map(Class).setInjector
7)super.injector.map(Class).softly
8)super.injector.map(Class).toProvider
9)super.injector.map(Class).toSingleton
10)super.injector.map(Class).toType
11)super.injector.map(Class).toValue
12)super.injector.map(Class).unseal
Стараюсь как могу, но тут упераюсь в тотальное отсутствие документации с описанием. Примеры с гигхаба помогают, но мало. Я немного понимаю о этом и руководства из первой версии, эти методы указывают как создавать экземпляр и сколько раз. Но на этом понимание останавливаются.

Добавлено через 2 часа 34 минуты
По своей глупости я не правильно задал вопрос, это вообще не относится к RL2, это из SwiftSuspenders.
Если кто то знает где можно почитать про SwiftSuspenders 2 дайте пожалуйста ссылку.
Очень хочу освоить RL2, но четвёртый день просто до сумашествия без прорыва.

Старый 26.07.2013, 21:21
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 2  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Здесь есть описание всех этих методов.

Если написать
Код AS3:
injector.map(YourClass).asSingleton();
то при запросе YourClass, всегда будет возвращается один единственный экземпляр этого класса.

Если написать
Код AS3:
injector.map(YourClass).toValue(new SomeValue);
то при запросе YourClass, всегда будет возвращается единственный экземпляр класса, который был указан в скобках toValue.

Если написать
Код AS3:
injector.map(YourClass).toType(BetterClass);
то при запросе YourClass, всегда будет возвращается новый экземпляр класса, который был указан в скобках toType.

Вот, что нашел в интернете:
Код AS3:
injector.map(YourClass); //current equivalent: injector.mapClass(YourClass, YourClass);
injector.map(YourClass, 'name'); //current equivalent: injector.mapClass(YourClass, YourClass, 'name');
injector.map(YourClass).to(YourClass); //equivalent to the first mapping (i.e.: optional)
injector.map(YourClass, 'name').to(YourClass); //equivalent to the second mapping (i.e.: optional)
injector.map(YourInterface).toType(YourClass); //current equivalent: injector.mapClass(YourInterface, YourClass);
injector.map(YourClass).asSingleton(); //current equivalent: injector.mapSingleton(YourClass);
injector.map(YourInterface).toType(YourClass).asSingleton(); //current equivalent: injector.mapSingletonOf(YourInterface, YourClass);
injector.map(YourInterface).toValue(value); //current equivalent: injector.mapValue(YourInterface, value);
var request : InjectionRequest = injector.map(YourClass); //current equivalent: var request : InjectionConfig = injector.getMapping(YourClass);
Полезно, если знаете Robotlegs 1.

P.S. Остальные методы не так важны для изучения RL2.

Старый 26.07.2013, 22:42
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
TWETTI Большое Вам Спасибо! Сейчас продолжу изучение класса который находится по Вашей ссылке. Продолжу, это по тому, я мельком его уже сегодня пробежал, точнее сказать пытался перевести гуглом, но этот перевод плодовитым не оказался. В общем разрываюсь между классами,
примерами на гигхабе и.. и всё, больше нет не чего! Чтобы лучше обрисовать свою ситуацию - представьте, что я только начал изучать as3, но у меня не было как у всех первых игр сделаных не по шаблонам, не первых сайтов, а вместо этого я сразу начал учить MVC, которую как надеюсь понял. И в тот самый момент, как мне показалось что я понял, я услышал про RL2. И вот теперь я кое как, маленькими шагами приближаюсь к самому началу постижение этого фрейворка. Тяжело только из-за отсутствия информации. Сами авторы говорят, что вторая версия создана для тех кто учился на первой версии и что не каких других хелпов и книг уже не будет. Советуют учится на том что есть. Если подытожить все сказанное, то получится - если Вы увидели вопрос в этой теме и у Вас есть время, то не проходите мимо, потому что как сами понимаете, больше помощи ждать и искать особо неоткуда.
Цитата:
Вот, что нашел в интернете:
я тоже натыкался на этот код на каком то полукитайском сайте и скопировал просто в блокнот, думая что когда нибудь это может завершить сложения пазла.
И ещё есть один вопрос:
Цитата:
то при запросе YourClass, всегда будет возвращается один единственный экземпляр этого класса.
то есть, во всем приложении создаться только один экземпляр этого класса и при последующих обращениях\внедрениях экземпляров уже создаваться не будет? Как бы оператора new уже не будет?
И поправьте меня если я ошибаюсь:
Код AS3:
injector.map(YourClass).toValue(new SomeValue);
при обращении к классу YourClass, а если быть точным
Код AS3:
package  
{
	public class MyClass 
	{
		/**
		 * по запуску класса Contex он внедрит в это класс
		 * новый экземпляр класса YourClass. То есть он создаст где то в своей памяти
		 * новый экземпляр класса и при каждом обращении к этому ( MyClass ) классу 
		 * больше не будет создавать новый\очередной экземпляр класса YourClass ?
		 * или он будет при каждом обращении к классу MyClass создавать очередной 
		 * экзепляр класса YourClass, а затем удалять его и так всегда?
		 */
		[Inject]
		public var _yourClass:YourClass;
 
		public function MyClass() 
		{
 
		}
		overide public function initialize():void
		{
			//и здесь обращусь к методам класса YourClass
		}
 
	}
 
}
Код AS3:
injector.map(YourClass).toSingleton(IYourClass);
при обращении к классу YourClass будет всегда возвращать один и тот же экземпляр IYourClass

Старый 26.07.2013, 23:24
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 4  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Цитата:
то есть, во всем приложении создаться только один экземпляр этого класса и при последующих обращениях\внедрениях экземпляров уже создаваться не будет? Как бы оператора new уже не будет?
Да. Это называется синглтон. Есть такой шаблон проектирования.

Цитата:
И поправьте меня если я ошибаюсь:
Ошибаетесь. Не по запуску класса Context, а при создании класса MyClass. И в момент инъекцкии переменной _yourClass будет происвоен экземпляр класса YourClass, который мы передали здесь:
Код AS3:
injector.map(YourClass).toValue(new SomeValue);
Или так:
Код AS3:
// Создаем некий класс и меняем его состояние:
var some:YourClass = new YourClass();
some.someVar = 1234;
some.someAction();
// Указываем, что при запросе YourClass отдавать экземпляр some.
injector.map(YourClass).toValue(some);
Код AS3:
package  
{
	public class MyClass 
	{
		[Inject]
		public var yourClass:YourClass;
 
		public function MyClass() 
		{
 
		}
 
		overide public function initialize():void
		{
			trace(yourClass.someVar); // Выведет 1234
		}
	}
}
P.S. Может вам стоить изучить RL1. По нему книги есть и уроки. А потом уже перейти на RL2? Могу книжечку продать если знаете английский.

Добавлено через 9 минут
Цитата:
injector.map(YourClass).toSingleton(IYourClass);
при обращении к классу YourClass будет всегда возвращать один и тот же экземпляр IYourClass
Нет. IYourClass не класс, а интерфейс. Поменяйте класс и интерфейс местами.

Пример:
Код AS3:
injector.map(IGalleryImageService).toSingleton(FlickrImageService);
При запросе IGalleryImageService будет возвращаться FlickrImageService;

Старый 26.07.2013, 23:38
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Да. Это называется синглтон. Есть такой шаблон проектирования.
Знаю такой. Просто переспросил, чтобы быть уверенным. Наверное по этому и рекомендуют отказаться от инициализации в конструкторах.
Цитата:
P.S. Может вам стоить изучить RL1. По нему книги есть и уроки. А потом уже перейти на RL2? Могу книжечку продать если знаете английский.
А оно так на то и получается, не как не разберёшься сразу со второй версией. А книгу... я не люблю английский, да и информации как таковой много, но вот перевод... Только сегодня узнал, что словосочетание "Синтаксический сахар" - это не ошибка гугла переводчика.
Спасибо Вам Большое за помощь! Пошёл переводить весь класс InjectionMapping... удачи мне..

Старый 26.07.2013, 23:41
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 6  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Зачем вам сейчас MVC и Robotlegs? Вы же только начали изучать AS3. И зачем изучать, переводить все классы фреймворка? Я за 2 года разработки на RL использовал только asSingleton.

Старый 26.07.2013, 23:59
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Зачем вам сейчас MVC и Robotlegs?
А я не знаю, что мне ещё учить.
Цитата:
И зачем изучать, переводить все классы фреймворка?
Причина - я не знаю, что мне от туда может понадобиться, а изучая примеры, я от примера к примеру сталкивался с самописными классами, которые и так уже реализованы в RL2. И может я ошибаюсь, но у меня при просмотре множества примеров, складывалось впечатление, что монстра RL используют только из-за инжекта, который если я опять таки не ошибаюсь есть в чистом виде во фреймворке SwiftSuspenders 2.

Добавлено через 3 минуты
И возможно у Вас знакомство происходило после чтения книги и Вы уже знали, что Вам надо.
А я читаю ту же книгу, но из-за неоднозначного перевода приходится все сразу смотреть, и примеры и классы. Потом разумеется я буду думать, что за чем мне это все надо было, точно так же как я сейчас вспоминаю, как в самом начале я все в тетрадке записывал. Сейчас смешно, а тогда казалось, что ИМЕННО ТАК И НУЖНО )))

Старый 27.07.2013, 00:15
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 8  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Ответил вам в другой теме про RL2.
http://www.flasher.ru/forum/showthread.php?t=202436

Старый 27.07.2013, 16:05
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 9  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
В чем я ошибаюсь?
Код AS3:
		public function MainConfig(stage:Stage ,contextView:DisplayObjectContainer) 
		{
			super.initialize();
			super.configure(new ContextView(contextView));
			injector.map(ClassA).asSingleton();
			var myClass:ClassC = new ClassC();
			myClass.num = 555;
			injector.map(ClassC).toValue(myClass);
			injector.injectInto(myClass);
			super.injector.instantiateUnmapped(ClassA);
 
		}
Код AS3:
package  
{
	public class ClassC 
	{
 
		public var num:int = 0;
 
		public function ClassC() 
		{
			//		
		}
 
	}
 
}
Код AS3:
package  
{
	import robotlegs.bender.framework.impl.Context;
	public class ClassA 
	{
		[Inject]
		public var _c:ClassC;
 
		private var _context:Context;
 
		public function ClassA() 
		{
			_context = new Context();
			_c = _context.injector.instantiateUnmapped(ClassC);
			trace(_c.num);//why the value is not 555?
		}
 
	}
 
}
Добавлено через 2 минуты
Цитата:
А вы уже всё остальное выучили?)
Всё выучить наверное невозможно, выучил лишь на столько, на сколько могу найти применение.
Цитата:
Всеми возможными путями найдите какой-нибудь вам интересный(!) проект,
Вы наверное не подумали, что я ещё маленький)

Старый 27.07.2013, 16:38
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 10  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Не понятно ничего. Напишите подробно, что вы хотите сделать.
Почему класс ClassA содержит в себе иниализацию класса Context? [Inject] можно использовать только после того, как Context будет создан.

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

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

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


 


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


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