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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.09.2011, 05:23
Squirrel вне форума Посмотреть профиль Отправить личное сообщение для Squirrel Найти все сообщения от Squirrel
  № 1  
Ответить с цитированием
Squirrel

Регистрация: Mar 2004
Адрес: Moscow
Сообщений: 115
По умолчанию Как вернуть undefined в результате выполнения функции?

Есть функция, которая вычисляет выражение, заданное с помощью строки

(т.е. calculate("(12 + 6) / 3") должно вернуть 6)

Но помимо вычисления собственно численных выражений еще можно задавать свои переменные в другом месте и передавать в эту функцию в составе строки

(т.е. где-то задаем x = 10 и получаем calculate("x + 5") = 15)

Соот-но, если в функции встречается переменная, проверяется, задана ли она, и, если не задана, функция должна вернуть undefined. А я в другом месте говорю - просчитай это выражение и, если вернулось undefined, выведи сообщение: "Вы не задали значение переменной &variable."

Все вроде хорошо, функция все подсчитывает, инициализацию переменных проверяет, но когда ф-ция возвращает undefined, на выходе я каждый раз получаю 0. Как мне узнавать, что выражение не может быть посчитано?

У меня есть вариант только в ф-ции выдавать ошибку, а я ее буду ловить и выдавать сообщ-ние, но мне этот вариант не очень нравится. Кроме того, это ж логично, если значения выражения неопределенно, я в итоге и получаю undefined.

Старый 12.09.2011, 10:53
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
function calculate(...params):Number {
    rerurn NaN;
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 12.09.2011 в 10:56.
Старый 12.09.2011, 10:54
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 3  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Код AS3:
 var u:*;
                trace(u);//undefined
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 12.09.2011, 11:02
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 4  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Genzo, а в данном случае u по сути разве не Object, а undefined возвращается только потому что у переменной отсутствует к.-л. значение?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 12.09.2011, 11:27
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 5  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Цитата:
Специальное значение, применяемое к неинициализированным переменным без типа или неинициализированным свойствам динамического объекта. В ActionScript 3.0 только переменные без определенного типа могут сохранять значение undefined в отличие от ActionScript 1.0 и ActionScript 2.0.
причем тут Object?
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 12.09.2011, 11:43
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
причем тут Object?
Если задать переменной тип данных вайлд кард, то при компиляции она все равно станет объектом
Специально проверял создавая такие переменные, а потом декомпилируя полученный файл

Старый 12.09.2011, 15:06
Squirrel вне форума Посмотреть профиль Отправить личное сообщение для Squirrel Найти все сообщения от Squirrel
  № 7  
Ответить с цитированием
Squirrel

Регистрация: Mar 2004
Адрес: Moscow
Сообщений: 115
Не работает.

Код AS3:
trace("test: ", test(), isNaN(test()));
 
 private static function test():int {
       return NaN;
 }
В результате трейсится:
"test: 0 false"

Старый 12.09.2011, 15:13
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Number надо.
__________________
тут я

Старый 12.09.2011, 15:18
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 9  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
если надо инт то разве что могу порекомендовать int.MAX_VALUE \ int.MIN_VALUE, другие варианты более чем возможны. например uint при получении отрицательного числа принимает максимальное значение. ну или как советовали перейти на намбер.

Старый 12.09.2011, 15:40
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 10  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Number это согласно документации IEEE-754 double-precision floating-point number. Undefined и NaN бывают только в нём, курите раз и два.
__________________
:)

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

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

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


 


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


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