Показать сообщение отдельно
Старый 21.09.2016, 21:13
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 30  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от undefined Посмотреть сообщение
Иногда без него никак.Например если надо один и тот же метод сделать хэндлером для двух разных ивентов например:
Код AS3:
private function onClose(e:*):void {
    if (e is MouseEvent) {
        //закрываем по клику мыши
    } else if (e is KeyboardEvent) {
        //закрываем по нажатию кнопки на клаве
    }
}
Все наследники Event наследуют Event. Дайте себе и людям хоть шанс. Туда не придет неEvent и это будет проверено при компиляции.

Код AS3:
private function onClose(event:Event):void {
    switch (true) {
        case event is MouseEvent:
            trace("MouseEvent");
            break;
        case event is KeyboardEvent:
            trace("KeyboardEvent");
            break;
    }
}
Цитата:
Как понять "обратиться к свойствам и методам в compile time"? Обращение происходит исключительно в runtime
Языки с высокой степенью типизации сделаны не для того, чтобы мы проверяли результат исполнения приложения во время исполнения. Нет, люди специально сидели и думали. Ночами не спали и придумали, что все равно всех рантайм кейсов не покроешь, и придумали типизацию. Когда ты пишешь свою нетленку на ActionScript 3.0 и нажимаешь Ctrl+B (Build all), то ты понимаешь где ошибся. Строгая типизация тебе помогает. Но представь себе, что вместо исправления ошибки в compile time ты заменяешь тип объекта на Object или *. Компилишь и все ок. Можно отдавать заказчику. А когда они словят этот эксепшен в рантайме? Может и никогда. Пофит сплошной. Приложуха сбилдилась и даже немного работает.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.