Просмотр полной версии : Не понятно как модификатор const влияет на числа.
Доброго времени суток!
Подскажите пожалуйста новичку по константам: не понятно как модификатор const влияет на числа.
Например
const a:int = 666;
a = 777;//Error
тут все понятно.
А вот тут нет
const a:int = 666;
a++;//нормально работает :(
как так?
ЗЫ когда дело касается классов, вроде все понятно - нельзя поменять ссылку на объект
proxiServer
13.05.2010, 10:30
А не с "666" пробовали? =)
Второе - баг. А вообще, AS3 не инлайнит константы и пользоваться в случае с числами, практически всегда лучше самими числами (ну только если там Пи или еще что-то такое, чтобы для удобства короче записать)...
Второе - баг. А вообще, AS3 не инлайнит константы и пользоваться в случае с числами, практически всегда лучше самими числами (ну только если там Пи или еще что-то такое, чтобы для удобства короче записать)...
мда. 6 лет пишу на С++ и еще с первых лет постоянно слышал что нефик использовать непонятные цифры. А тут(AS3) значит все иначе :) Забавно:wacko:
Ну если 6 лет, то наверное знаешь и зачем. И эти зачем остались и во флэше. Возможно в каком-то тормозящем куске есть смысл осторожно заменить константы на числа (и получить этак +5% производительности), но обычно - всё как в С++.
CrazyFlasher
13.05.2010, 13:17
const a:int = 666;
a++;//нормально работает :(
у меня не компилит
У меня четвертый СДК собрал и ничего не сказал...
Ну есть разница... Если создавать константу типа:
const ONE:uint = 1;
То это глупо.
А если
const AVOGADRO:Number = 1.660538783e23;
То это имеет смысл :)
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. Написал в кадре. И вот ошибка:
ReferenceError: Error #1074: Illegal write to read-only property a on Untitled_fla.MainTimeline.
at Untitled_fla::MainTimeline/frame1()
У меня четвертый СДК собрал и ничего не сказал...
такая же история. проверил под 3 и 4 на win и mac
Добавлено через 4 минуты
запостил баг https://bugs.adobe.com/jira/browse/ASC-4075
с янгл язом правда проблемы у мну :) ну думаю проблема будет понятна
Добавлено через 11 минут
Ну если 6 лет, то наверное знаешь и зачем...
*YES*
Добавлено через 20 минут
кто-то опередил https://bugs.adobe.com/jira/browse/ASC-4074
Добавлено через 32 минуты
upd: опередил господин wvxvw :)
Ничего, лучше им по нескольку раз напоминать - хуже от этого точно не будет :)
Да, и вообще, по-научному, это называется unfold constants, а не inline. Теперь еще осталось выяснить, как переводится :)
BlooDHounD
14.05.2010, 00:43
с членами класса выдаёт ошибку, а с локальными константами не выдаёт. поэтому у CrazyFlasher баг не срабатывает. локальные константы существуют только на момент компиляции. в рантайме они становятся обыкновенными переменными.
CrazyFlasher, потому что в кадре.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.