Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Изменение определения переменной (http://www.flasher.ru/forum/showthread.php?t=211053)

Godwarlock 17.06.2015 18:56

Изменение определения переменной
 
Всем привет. Возник таков вопрос. Есть пустая переменная
Код AS3:

public const key:String;

Переменная является константой, то бишь изменить её нельзя будет. Вопрос в том, как мне занести в нее значение, а после получения значения привести к const?
Например та же переменная
Код AS3:

public var key:String;
 
key = "abc";
 
//После чего, когда переменная получила свое значение, надо перевести её в const, чтобы в дальнейшем уже нельзя было заменить значение abc.

Возможно ли? Или есть альтернатива?

KBAC 17.06.2015 19:37

Сделайте сеттер, и если значение переменной отличается от дефолтного не записывайте новое в неё.

samana 17.06.2015 20:20

Можно попробовать и по-другому, но это как-то грязновато
Код AS3:

public const key:String;
 
public function Main()
{
        trace(key); //null
        this["key"] = "abc";
        trace(key); // abc
}


gloomyBrain 17.06.2015 22:11

Если не ошибаюсь, const в AS3 - это обычная переменная, которой можно присвоить значение только один раз. То есть Вам ничто не может помешать записать в нее что угодно и откуда угодно. И потом упасть во время выполнения при попытке повторного присвоения.

samana 17.06.2015 22:14

Цитата:

Сообщение от gloomyBrain (Сообщение 1183767)
Если не ошибаюсь, const в AS3 - это обычная переменная, которой можно присвоить значение только один раз.

Я тоже в этом был почему-то уверен. Но проверил - вылазит ошибка.

ZackMercury 17.06.2015 22:20

Так нельзя
Код AS3:

const a:int;
a = 5;

Так можно
Код AS3:

const a:int = 5;

Константе нужно присваивать значение только на этапе объявления, или вот так, как предложил samana, но это уже хак:
Код AS3:

this["a"] = 5;



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

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