Показать сообщение отдельно
Старый 31.01.2007, 18:41
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Код:
function foo (a:Number, b:Number) {
	return a + b;
}

//// false
//trace (foo ("1", "1"));

//// true
//a = "1";
//b = "1";
//trace (foo (a, b));

//// false
//var a:Number = "1";
//var b:Number = "1";
//trace (foo (a, b));
Три примера. По очереди расскомментарьте каждый и посмотрите реакцию флеша. true - когда флеш не ругается. false когда ругается.
Почему в первом примере у нас ошибка, а во втором нет?
Потому, что в первом мы отдаем непосредственно сами значения. А во втором переменные, тип которых мы не определили. А как известно, тип во флеше играет роль только при компиляции, а не во время исполения и флеш также как и раньше производит автоматическое преобразование типов. Это лекго проверить с помощью
Код:
function foo (a:Number, b:Number) {
	return a * 1 + b * 1;
}

a = "1";
b = "1";
trace (foo (a, b));
На выходе мы получаем 2, а не "11"
__________________
(и)Нильс.ru | Плагины для FlashDevelop