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

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

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

Регистрация: Feb 2014
Сообщений: 56
Question Класс и Экземпляр, разность типов

Здравствуйте.

Сепарирую передаваемое значение:
Код AS3:
public   function set subject(obj:*):void
                {
                if(obj==null) {
                    childsLayer.removeChild(icoObject);
                    icoObject=null;
                } else {
                    if(obj as Class) {
                        if(icoObject != null){childsLayer.removeChild(icoObject);}
                        icoObject=new obj();}
                    if(obj as Object) {
                        if(icoObject != null){childsLayer.removeChild(icoObject);}
                        icoObject=obj;}}
                Redraw();
            }
Тем самым хочу отсеять экземпляр созданный с new и просто класс:

Код AS3:
btn1.subject = new ccb();
btn1.subject = ccb;
Но ничего не выходит, они все являются Object.

Как бы отсепарировать два аргумента подобным образом?

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Потому что предлог не правильный использован. As - это как, а is - (есть) третье лицо, единственное число от быть
Код AS3:
package {
	import flash.display.Sprite;
 
	public class TypeChecker extends Sprite {
 
		public function TypeChecker() {
			checkType(Sprite); // это класс
			checkType(new Sprite()); // это экземпляр
		}
		private function checkType(obj:*):void {
			if (obj is Class) {
				trace("это класс");
			} else if (obj is Object) {
				trace("это экземпляр");
			}
		}
	}
 
}

Старый 25.07.2015, 18:43
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 3  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
is = является, я так перевожу обычно.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
is = является, я так перевожу обычно.
Не нужно изобретать велосипед
Изображения
 

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ох, да хоть три таблички, всё равно является, тем более в отношении классов.
Не мне ли вам говорить, что иногда он вообще переводится в форме " - это"

Неужели вы читаете "если obj есть Apple(яблоко), то"?
Всегда резало слух в переводах - дословная фразировка.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Мы тут оффтопим, но технические термины (как в этом случае) лучше переводить дословно. Это не художественный перевод.
Цитата:
Неужели вы читаете "если obj есть Apple(яблоко), то"?
Это хорошая привычка для себя.

Старый 25.07.2015, 21:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
А "Является" не является дословным переводом "is" в данном контексте? Почему именно "есть"? Есть = является. И, кстати, Class is Object = true.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
И, кстати, Class is Object = true.
Да. Но Object is Class = false; Поэтому проверку на Class я и написал первой

Старый 25.07.2015, 21:12
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Это я к тому, что is Object не гарантирует наличие некоего экземпляра созданного с помощью new.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Это я к тому, что is Object не гарантирует наличие некоего экземпляра созданного с помощью new.
Ну это понятно, но задачу ТС данный код выполняет. Там бы конечно можно еще ввести проверку typeof, но, я думаю, и так сойдет

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

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

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


 


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


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