-
Notifications
You must be signed in to change notification settings - Fork 0
Smart Variables (ru)
SmartVariables - языковое расширение, которое дает более сжатый синтаксис инициализации переменных.
Иногда синтаксис описания переменной в ActionScript3 может показаться избыточным и слишком многословным. Расширение SmartVariables предоставляет дополнительную возможность для создания новых переменных в компактном стиле(без использования ключевого слова var и указания типа).
Это особенно полезно в условных операторах (if-then-else) или при сложном описании объекта (вместе с языковым расширением ObjectBuilder).
Кроме того, в отличие от переменных без указания типа, смарт-переменные контекстно-ориентированы. При создании смарт-переменной, её тип будет автоматически определён из контекста. Это означает, что проверка типов и автозаполнение будут работать со смарт-переменными.
// без Smart Variables
var s : Sprite = this;
if (s is MovieClip) {
var mc : MovieClip = s as MovieClip;
if (mc.currentFrame > 1 && mc.totalFrames > 10) {
}
}Использование SmartVariables позволяет избавиться от двух проблем:
- чрезмерного создания переменных;
- необоснованного копирования кода.
// с Smart Variables
var s : Sprite = this;
if (s is MovieClip && (mc:(s as MovieClip)).currentFrame > 1 && mc.totalFrames > 10) {
}##Синтаксис
###variableName : expression
Для инициализации локальной переменной Вам необходимо поставить двоеточие перед выражением и ввести имя. SmartVariables называются так потому, что они могут определять тип выражения из контекста.
var s : String = "hello"; // переменная
s:"hello"; // smart VariableИспользуйте эту конструкцию с осторожностью. Несмотря на свой компактный вид, если использовать его за пределами условного оператора или инициализацией объекта с ObjectBuilder, она может сильно уменьшить читабельность кода.
##Использование Smart Variables вместе с ObjectBuilder
Как и ObjectBuilder, Smart Variables возникли под влиянием синтаксиса функциональных языков, таких как JavaFX, Scala или Ruby. Сочетание этих языковых расширений делает Ваш код более кратким и читаемым.
sp:Sprite{
width : 100;
height : 100;
};
this.addChild(sp);