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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.12.2008, 23:10
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 21  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
О! боже! кажется я ничего не путаю!!! что мне делать с этим?
просто Вы игнорируете в который раз написанное мной.

отличается хотя бы тем, что они абсолютно по разному работают. даже в байткоде они, соответственно, выглядят по разному.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Сказать по правде этот пункт в рекомендациях Адоби мне не понятен. Т.е. конвертация и приведение типов - 2 разные вещи и нужны для разных целей, а с какого перепуга они это объединили - я не знаю. Т.е. as нужен для того, чтобы представить объект класса-наследника в качестве супер-класса (ну или наоборот, если такое возможно), а конвертация - это взять один тип данных и заменить его другим, опять же, если возможно, при чем даже не обязательно, что конвертация в обратную сторону вернет нам исходное значение.
__________________
Hell is the possibility of sanity

Старый 03.12.2008, 11:45
ZlPredator вне форума Посмотреть профиль Отправить личное сообщение для ZlPredator Найти все сообщения от ZlPredator
  № 23  
Ответить с цитированием
ZlPredator

Регистрация: Nov 2008
Сообщений: 65
Цитата:
Сообщение от __etc Посмотреть сообщение
ZlPredator, для приведения типов создан специальный оператор. Его и только его нужно использовать для приведения.
Да я собственно и не спорю, все вопросы к Adobe с её рекомендациями.

Цитата:
Взять хотя бы такой пример:

Код:
var c:Class = Array;
var n:Number = 10;
trace(c(n));
Мы получим в ответ массив вместо null, а ведь «c» может содержать в себе ссылку на любой класс, заранее неизвестный. Поэтому не стоит мешать мух и котлеты.
При использовании Class, связывание происходит в момент выполнения. Но сути это не меняет. В примере выше вы просто вызвали глобальную функцию Array().

Цитата:
отличается хотя бы тем, что они абсолютно по разному работают. даже в байткоде они, соответственно, выглядят по разном
Отличаются тем, что отличаются. Хороший ответ. Я уже говорил что у них есть отличие - обработка ошибок (as возвращает null, сведение генерирует исключения). Больше различий я не нашел. Никакой конвертацией такой тип записи не является. И приводит он ВСЕГДА к тому же результату, что и as (за исключением обработки ошибок).
Покидаться словами вы любитель. Приведите пример, где такое сведение даёт результат, отличный от as (именно сведение а не вызов глобальных функций).

Цитата:
Сказать по правде этот пункт в рекомендациях Адоби мне не понятен. Т.е. конвертация и приведение типов - 2 разные вещи и нужны для разных целей, а с какого перепуга они это объединили - я не знаю.Т.е. as нужен для того, чтобы представить объект класса-наследника в качестве супер-класса (ну или наоборот, если такое возможно), а конвертация - это взять один тип данных и заменить его другим, опять же, если возможно, при чем даже не обязательно, что конвертация в обратную сторону вернет нам исходное значение.
Конвертацией занимаются только глобальные функции: Array(), Boolean(), Date(), int(), Number(), Object(), String(), uint(), XML(), XMLList(). Запись вида MyClass(x) - это просто более безопасное сведение (поскольку генерирует исключение) чем as (по крайней мере Adobe по ходу так думает), никакой конвертацией здесь и не пахнет...

Старый 03.12.2008, 12:28
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 24  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ZlPredator, а чем с точки зрения ООП, отличается Ваш класс от любого другого? Вы сейчас спорите сами с собой? Вам привели как минимум 2 примера различной работы, что Вам ещё надо?

Старый 03.12.2008, 12:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 25  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от ZlPredator Посмотреть сообщение
Да я собственно и не спорю, все вопросы к Adobe с её рекомендациями.
Причем тут рекомендации? Дело не в рекомендациях, а в том, что код при использовании каста в стиле AS2 в некоторых случаях работает совсем не как каст, конкретный пример я вам привел. А уж сколько геморроя из-за отсутствия нормального каста в AS2 было — жуть!

Цитата:
Сообщение от ZlPredator Посмотреть сообщение
При использовании Class, связывание происходит в момент выполнения. Но сути это не меняет. В примере выше вы просто вызвали глобальную функцию Array().
Вы не вникли в суть кода и описания к нему. Переменная «c» содержит ссылку на заранее неизвестный класс (например, по данным с сервера) и каст подобным образом может вместо null вернуть конвертированное значение, что неприемлимо.

Цитата:
Сообщение от ZlPredator Посмотреть сообщение
Запись вида MyClass(x) - это просто более безопасное сведение (поскольку генерирует исключение) чем as (по крайней мере Adobe по ходу так думает), никакой конвертацией здесь и не пахнет...
С чего вдруг безопасное? Сплошь и рядом try … catch будем ставить или сразу вываливать весь стек пользователю? Очень оригинальный и безопасный подход.

Старый 03.12.2008, 13:12
ZlPredator вне форума Посмотреть профиль Отправить личное сообщение для ZlPredator Найти все сообщения от ZlPredator
  № 26  
Ответить с цитированием
ZlPredator

Регистрация: Nov 2008
Сообщений: 65
Цитата:
Причем тут рекомендации? Дело не в рекомендациях, а в том, что код при использовании каста в стиле AS2 в некоторых случаях работает совсем не как каст, конкретный пример я вам привел. А уж сколько геморроя из-за отсутствия нормального каста в AS2 было — жуть!
Спасибо что объяснили. Только никто и не спорил, что надо писать MyClass(x) вместо (x as MyClass).
Рекомендации при том, что Adobe рекомендует писать MyClass(x) вместо x as MyClass, что и меня удивляет.
Человек спросил на конкретном примере (Bitmap), что значит запись вида Bitmap(x). Я сказал что это сведение, Вы же доказываете, что конвертация. Хотя конвертацией данная запись НЕ является.
Суть исключений в том, что решение принимает код, который знает что делать с ошибкой (выводить пользователю или в лог или ...), а обработка null заставляет принимать решение на месте. Поэтому использование MyClass(x) наверно обосновано там, где четко ожидается нужный класс, и получение другого является непредвиденной ситуацией.

BlooDHounD. ООП здесь не при чём. Глобальные функции Array(),... захардкодены, а для все остальных классов работает СВЕДЕНИЕ а не конвертация.
От Вас мне ничего не надо. Судя по постам это Вам от меня что-то надо.

Старый 03.12.2008, 13:22
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 27  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от ZlPredator Посмотреть сообщение
Спасибо что объяснили. Только никто и не спорил, что надо писать MyClass(x) вместо (x as MyClass).
Рекомендации при том, что Adobe рекомендует писать MyClass(x) вместо x as MyClass, что и меня удивляет.
Ну рекомендации рекомендациями, а голову лучше держать на плечах
Держать постоянно в голове, что Array(x) и MyClass(x) работают по разному (имея при этом одинаковый формат) — неблагодарное занятие.


Последний раз редактировалось etc; 03.12.2008 в 13:25.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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