Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не понятно как модификатор const влияет на числа. (http://www.flasher.ru/forum/showthread.php?t=139859)

chaos 13.05.2010 08:35

Не понятно как модификатор const влияет на числа.
 
Доброго времени суток!
Подскажите пожалуйста новичку по константам: не понятно как модификатор const влияет на числа.
Например
Код AS3:

const a:int = 666;
a = 777;//Error

тут все понятно.

А вот тут нет
Код AS3:

const a:int = 666;
a++;//нормально работает :(

как так?

ЗЫ когда дело касается классов, вроде все понятно - нельзя поменять ссылку на объект

proxiServer 13.05.2010 10:30

А не с "666" пробовали? =)

wvxvw 13.05.2010 11:14

Второе - баг. А вообще, AS3 не инлайнит константы и пользоваться в случае с числами, практически всегда лучше самими числами (ну только если там Пи или еще что-то такое, чтобы для удобства короче записать)...

chaos 13.05.2010 12:34

Цитата:

Сообщение от wvxvw (Сообщение 907892)
Второе - баг. А вообще, AS3 не инлайнит константы и пользоваться в случае с числами, практически всегда лучше самими числами (ну только если там Пи или еще что-то такое, чтобы для удобства короче записать)...

мда. 6 лет пишу на С++ и еще с первых лет постоянно слышал что нефик использовать непонятные цифры. А тут(AS3) значит все иначе :) Забавно:wacko:

-De- 13.05.2010 13:06

Ну если 6 лет, то наверное знаешь и зачем. И эти зачем остались и во флэше. Возможно в каком-то тормозящем куске есть смысл осторожно заменить константы на числа (и получить этак +5% производительности), но обычно - всё как в С++.

CrazyFlasher 13.05.2010 13:17

Код AS3:

const a:int = 666;
a++;//нормально работает :(

у меня не компилит

wvxvw 13.05.2010 14:26

У меня четвертый СДК собрал и ничего не сказал...

Ну есть разница... Если создавать константу типа:
Код AS3:

const ONE:uint = 1;

То это глупо.
А если
Код AS3:

const AVOGADRO:Number = 1.660538783e23;

То это имеет смысл :)

chaos 13.05.2010 14:32

Цитата:

Сообщение от CrazyFlasher (Сообщение 907931)
Код AS3:

const a:int = 666;
a++;//нормально работает :(

у меня не компилит

:eek:

Код:

Setting environment for using the Flex SDK.

C:\Program Files (x86)\Adobe\Flex Builder 3>java -version
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)

C:\Program Files (x86)\Adobe\Flex Builder 3>compc -version
Version 3.2.0 build 3958

C:\Program Files (x86)\Adobe\Flex Builder 3>cd c:\Users\dkononenko\temp\const_test

c:\Users\dkononenko\temp\const_test>cat ConstTestApp.as

package {
        import flash.display.Sprite;

        public class ConstTestApp extends Sprite {
                public function ConstTestApp() {
                        const CONSTANTA:int = 1234;
                        CONSTANTA++;
                }
        }
}

c:\Users\dkononenko\temp\const_test>mxmlc ConstTestApp.as
Loading configuration file C:\Program Files (x86)\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\flex-config.xml C:\Users\dkononenko\temp\const_test\ConstTestApp.swf (568 bytes)

как видите все "гуд" :)

CrazyFlasher 13.05.2010 14:36

я билдил в cs4. Написал в кадре. И вот ошибка:
Код AS3:

ReferenceError: Error #1074: Illegal write to read-only property a on Untitled_fla.MainTimeline.
        at Untitled_fla::MainTimeline/frame1()


chaos 13.05.2010 14:39

Цитата:

Сообщение от wvxvw (Сообщение 907946)
У меня четвертый СДК собрал и ничего не сказал...

такая же история. проверил под 3 и 4 на win и mac

Добавлено через 4 минуты
запостил баг https://bugs.adobe.com/jira/browse/ASC-4075
с янгл язом правда проблемы у мну :) ну думаю проблема будет понятна

Добавлено через 11 минут
Цитата:

Сообщение от -De- (Сообщение 907928)
Ну если 6 лет, то наверное знаешь и зачем...

*YES*

Добавлено через 20 минут
кто-то опередил https://bugs.adobe.com/jira/browse/ASC-4074

Добавлено через 32 минуты
upd: опередил господин wvxvw :)


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

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