Приведение типов, untyped, unsafe cast

Вы можете приводить из одного типа в другой используя ключевое слово cast.

     var a : A = ....
     var b : B = cast(a,B);
</div>

Это либо вернёт значение a с типом B если a это экземпляр B, либо выбросит исключение "Class cast error".

===== Untyped =====

Ещё один способ создания динамического поведения - использование ключевого слова untyped . Когда выражение объявлено как untyped, никакая проверка типов не будет производиться, так что вы можете делать много динамических операций за раз :

    untyped { a["hello"] = 0; }
</div>

Будьте осторожны и используйте нетипизированные выражения только когда вам это действительно нужно и когда вы знаете, что делаете.

===== Небезопасный Cast =====

Untyped это довольно мощный инструмент, но он позволяет любые типы неправильного синтаксиса. Ещё один другой путь - использование небезопасного приведения типов, которое похоже на обычный cast, за исключением того, что тип не указывается. Это значит, что вызов cast не будет сопровождаться проверкой при выполнении, но позволит вам "освободить" тип.

    var y : B = cast 0;
</div>

Cast в чём-то является эквивалентом сохранения значения во временной динамической переменной :

    var tmp : Dynamic = 0;
    var y : B = tmp;
</div>