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

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

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

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию Как отличить int от Number

Код:
var a:int = 2;
var b:Number = 2;

trace(a is int); // true
trace(b is int); // true

trace(a is Number); // true
trace(b is Number); // true

trace(typeof(a)); // number
trace(typeof(b)); // number
Собственно вопрос, как определить, что переменная "a" имеет тип int, а переменная "b" тип Number, не зависимо от значения, присвоенного переменной.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

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

Регистрация: Sep 2002
Сообщений: 30,787
Код:
var a:int = 2;
var b:Number = 2;
trace(describeType(this).variable.(@name=='b').@type);
Шутка, безусловно. А вообще, определять надо тип не у значения, а тип самой переменной, но не вижу никаких способов это сделать.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var a:Number = 2;
var b:int = 2;
function checkInt(i:int, n:Number):Boolean
{
	i *= Math.PI;
	n *= Math.PI;
	return i == n;
}
trace(checkInt(b, a));
Ну еще такой вариант
__________________
Hell is the possibility of sanity

Старый 06.08.2008, 14:15
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 4  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Есть одна шальная идея, правда работает вроде, но не "не зависимо от значения, присвоенного переменной"
Код:
var i:int = 2; // эту переменную надо проверить
var t:Number = i; //это временная
i+=0.5; // прибавим, а потом отнимим
trace(i == t+0.5); // false - значит i - int
i-=0.5; // отнимаем что прибавляли
// вот только i тут будет равна 1 =(, но думаю это поправимо
а если так
Код:
var i:Number = 2;
var t:Number = i;
i+=0.5;
trace(i == t+0.5); // true- значит i - number
i-=0.5;


Последний раз редактировалось Dima_DPE; 06.08.2008 в 14:46.
Старый 06.08.2008, 14:24
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Код:
var a:Number = 2;
var b:int = 2;
function checkInt(i:int, n:Number):Boolean
{
	i *= Math.PI;
	n *= Math.PI;
	return i == n;
}
trace(checkInt(b, a));
Ну еще такой вариант
Код:
var a:Number = 2;
var b:int = 2;
function checkInt(i:int, n:Number):Boolean
{
        i *= Math.PI;
        n *= Math.PI;
        return i == n;
}
trace(checkInt(b, a)); // false
trace(checkInt(a, b)); // false

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Естесственно, а что были сомнения? Мы же сравниваем тип аргументов, а не переменных =) я специально в примере подставил int вместо Number, чтобы такого вопроса не возникло.

т.е. trace(checkInt(a, a)); и trace(checkInt(b, b)); тоже выдадут false
__________________
Hell is the possibility of sanity

Старый 06.08.2008, 14:35
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 7  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
А вопрос был в определении именно типа переменной
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, тогда только describeType =) uint, int и Number взаимозаменимы и всегда берутся по значению, так что если значение одинаковое, то и переменные будут одинаковыми... поэтому и
Код:
var a:Number = 2;
var b:int = 2;
trace(getQualifiedClassName(a)); //int
trace(getQualifiedClassName(b)); //int
__________________
Hell is the possibility of sanity

Старый 06.08.2008, 19:49
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 9  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Наверное это оптимизация AS3/FlashPlayer 9.

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от MerlinTwi Посмотреть сообщение
А вопрос был в определении именно типа переменной
Я боюсь, что задача решения в общем случае не имеет, переменная может вообще не иметь определенного типа.

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

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

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


 


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


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