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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.03.2009, 01:28
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 1  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
По умолчанию Кстати, о конструкциях... Читал хабрарабр. Наткнулся на такое

Кстати, о конструкциях... Читал башорг хабрарабр. Нактнулся на такое
Код AS1/AS2:
TestClass(this).property = value;
Для заинтересовавшихся. Да так и не понял, как это работает.

UPD: "Такой прием во многих случаях может сократить объем кода и убрать негативный оттенок асинхронности". Очень понравилось.

UPD_1: Изучая комменты хабралюдей, увидел: "Функцию-то описать можно, но этот код не скомпилируется в том виде, в каком вы его привели, т.к. отсутствует конструктор, принимающий параметр. Будет сгенерирован по дефолту пустой конструктор, который не принимает аргументов, и при попытке туда что-то передать вылезет ошибка.
Я допускаю, что наличие правильного конструктора подразумевается, но это не для всех очевидно, некоторых читателей вы вводите в заблуждение".
Факт 1. Чувак вводит нас в заблуждение.

UPD_2. Чорт. Я не могу читать следующие комменты! Все слишком банально: "По-поводу TestClass, зачем так конструктор? Он не нужен, в примере использования ничего в класс не передаётся".

А кто объяснит UFO: "TestClass(this).property = value;"?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 03.03.2009 в 01:53.
Старый 03.03.2009, 02:26
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Это шедевр просто. Кастинг самого в себя. Безопасность кода чуть менее чем плохая, никакой смысловой нагрузки я тут не вижу. Ощущение, что человек путает as2 с as3.
__________________
4am is time to rock

Старый 03.03.2009, 02:35
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 3  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Это я писал про конструктор. Прочитав пост DarkLight, я понял что я идиот, ибо проглядел отсутствие new и спутал кастинг с созданием экземпляра
__________________
тонкий тролль, осеянный благодатью

Старый 03.03.2009, 02:39
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Друзья, но кто объяснит таки конструкцию
Код AS1/AS2:
TestClass(this).property = value;
Кастинг, это клева!
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 03.03.2009, 02:39
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 5  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
TestClass(this) - это приведение типов, аля this as TestClass, но немного не то, гуру меня поправят, да и как сказал DarkLight это реально шедевр, а вообще статья довольно холиварная, что легко заметить в коментах в оригинале.

Код AS3:
TestClass(this).property = value;
//то же
(this as TestClass).property = value;
// в данном контексте, то же
this.property = value;
// или вообще
property = value;


Последний раз редактировалось Dima_DPE; 03.03.2009 в 02:41.
Старый 03.03.2009, 02:47
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 6  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Сейчас какраз говорим об этом с автором:
http://habrahabr.ru/blogs/flex/52458/#comment_1419237
__________________
тонкий тролль, осеянный благодатью

Старый 03.03.2009, 02:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Кстати, для любителей подобных шедевров с легким налетом идиотизма...
http://www.actionscript.org/forums/s...=179053&page=3
__________________
Hell is the possibility of sanity

Старый 03.03.2009, 03:03
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 8  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Код AS3:
Function.prototype.curry = function(...rest){
  var method = this;
  return function(...args){
    return method.apply(this,rest.concat(args));
  };
};
Убило

Похоже вызывается это так:
Код AS3:
someFunction.curry(1, 2)(3, 4);
__________________
тонкий тролль, осеянный благодатью

Старый 03.03.2009, 03:05
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 9  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Хм, в случае того поста на хабре это будет паттерн "параноик". Ни один метод класса ни в чем не должен быть уверен Основным применением является защита от копипаста кода из одного класса в другой
__________________
4am is time to rock

Старый 03.03.2009, 11:26
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 10  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Интересно стало. потестил:
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/
	 */
	public class Main extends Sprite 
	{
		private var _value:int = 3;  
		public var func1:Function = new Paranoik().getValue;
		public var func2:Function = new Simple().getValue;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			trace (func1());
                        trace(func2());
 
		}
 
 
 
	}
 
}
Код AS3:
package  
{
 
	/**
	 * ...
	 * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/
	 */
	public class Paranoik 
	{
		private var _value:int = 1;
 
		public function Paranoik() 
		{
 
		}
 
		public function getValue():int
		{
			return Paranoik(this)._value;
		}
 
	}
 
}
Код AS3:
package  
{
 
	/**
	 * ...
	 * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/
	 */
	public class Simple 
	{
		private var _value:int = 2;
 
		public function Simple() 
		{
 
		}
 
		public function getValue():int
		{
			return _value;
		}
 
	}
 
}
По идее автора конструкции func2 не должна выдавать _value класса Simple, т.е. 2, а делегироваться на получение Main._value, чего конечно же не происходит.
зачем тогда: Paranoik(this)._value ?
__________________
Отряд Котовскага


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

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

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


 


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


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