Цитата:
Сообщение от 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 или *. Компилишь и все ок. Можно отдавать заказчику. А когда они словят этот эксепшен в рантайме? Может и никогда. Пофит сплошной. Приложуха сбилдилась и даже немного работает.