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

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

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
По умолчанию Хочу сделать int=null

Для чего?
К примеру,
Код AS3:
function setPosition(xPos:int=null):void{
if (xPos==null) x=Math.round(Math.random()*stage.stageWidth));
else x=xPos;
}
Но компилятор ругается на то, что int нельзя приравнять к null (Flex 4 sdk, strict mode).
Заводить второй аргумент как флаг очень не хочется, ровно как и хранить специальное число вроде 666, что
Код AS3:
function setPosition(xPos:int=null):void{
if (xPos==666) x=Math.round(Math.random()*stage.stageWidth));
else x=xPos;
}
Как вариант, можно объявить неопределенное число аргументов, а дальше уже делать всё что хочется, но вариант мне кажется не красивым.
Как быть?

Старый 29.08.2009, 14:47
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
int - это примитивный тип. А null применяется к ссылочным типам. И компилятор не ругается, а выдает предупреждение, но тем не менее присваивает в этом случае значение по умолчанию, т.е. 0.
В твоем случае можно смотреть количество аргументов, передаваемых в функцию.
Код AS3:
function test(a:int = 0):void
{
	trace(arguments.length);
}

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

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
а NaN нельзя задавать по умолчанию? Или просто какое-нито крайнее значение. максимальный/минимальный int

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

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
NaN только для Number.

Старый 29.08.2009, 19:46
kup вне форума Посмотреть профиль Отправить личное сообщение для kup Найти все сообщения от kup
  № 5  
Ответить с цитированием
kup

Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
Psycho Tiger, у вас "x" имеет тип Number. Правильнее было бы:

Код AS3:
function setPosition(xPos:Number):void
т.к. все равно у вас, int будет преобразовываться к Number.

А вобще, int.MIN_VALUE и int.MAX_VALUE вам могут помочь. Или просто используйте отрицательное значение.

Старый 29.08.2009, 20:08
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
kup, отрицательные значения не катят - я могу поставить объект за сценой, чтобы потом плавно переместить его на сцену. MIN_VALUE - это как подвид "специального" числа, только вероятность его использования у меня стремится к 0. И да, с чего вы взяли что у меня этот класс от наследника DisplayObject`а наследуется? =) Вообще да, но я сеттер переопределил для х, нужно там кое что ещё делать и нужен именно int) Спасибо за отклик.

2Волгоградец: у меня флешка даже не компилируется Говорит "явное несоответствие типов" - наверное, очень жесткий стрикт мод стоит какой-то, это в принципе меня радует.
Пожалуй да, arguments.length будет самым лучшим вариантом. Проскользнула мысль, что в любом случае в моём примере оно будет 1, но после захода в тему BloodHounD`а я уверен, что это не так
Спасибо всем.


Последний раз редактировалось Psycho Tiger; 29.08.2009 в 20:11.
Старый 29.08.2009, 20:30
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
А null применяется к ссылочным типам.
String типа тоже ссылочный?

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Со стрингом есть разница... и вообще, изза странных предписаний в ES, с null в AS3 какие-то неоднозначости...
Код AS3:
function f(s:String = ""):void
{
	trace(s);
}
function n(s:String = null):void
{
	trace(s);
}
f(); //
n(); // null
__________________
Hell is the possibility of sanity

Старый 29.08.2009, 22:57
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
В документации сказано, что это два разных значения
Цитата:
Значение null не то же самое, что и пустая строка (""), несмотря на то, что оба
эти значения отражают отсутствие каких-либо символов.

Старый 30.08.2009, 17:26
CrazyCoder вне форума Посмотреть профиль Отправить личное сообщение для CrazyCoder Найти все сообщения от CrazyCoder
  № 10  
Ответить с цитированием
CrazyCoder

Регистрация: Aug 2008
Сообщений: 15
Как показывает мой опыт, правильно - не делать неявных предположений в функциях типа setPosition. Если уж на то пошлО, то Х координата может быть и у объекта не размещённого на сцене и тогда этот код будет просто опасен. Нужно не передавать параметр для if, а решать - вызвать setPosition(x, y) или setPositionRand(stage.width, stage.height) в вызывающей функции.

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

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

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


 


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


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